AngularJS Uncaught ReferenceError: контроллер не определен из модуля

У меня есть следующий код;

var app =
    angular.
        module("myApp",[]).
        config(function($routeProvider, $locationProvider) {
            $routeProvider.when('/someplace', {
                templateUrl: 'sometemplate.html',
                controller: SomeControl
             });
             // configure html5 to get links working on jsfiddle
             $locationProvider.html5Mode(true);
        });

app.controller('SomeControl', ...);

Я получаю следующую ошибку

Uncaught ReferenceError: SomeControl is not defined from myApp

Проблема только в том, что я не могу использовать синтаксис app.controller('SomeControl',...)? при использовании $ routeProvider? единственный рабочий синтаксис:

function SomeControl(...)

person Joshua Wooward    schedule 03.07.2013    source источник
comment
дубликат: stackoverflow .com/questions/11211999/   -  person Karen Zilles    schedule 03.07.2013
comment
Спасибо @KarlZilles - я искал, но пропустил это.   -  person Joshua Wooward    schedule 08.07.2013


Ответы (3)


Используйте цитаты:

            controller: 'SomeControl'
person Foo L    schedule 03.07.2013
comment
DUH, спасибо, что нашли мою небольшую ошибку;) - person Joshua Wooward; 08.07.2013

Как сказал Foo L, вам нужно поставить кавычки вокруг SomeControl. Если вы не используете кавычки, вы имеете в виду переменную SomeControl, которая не определена, поскольку вы не использовали именованную функцию для представления контроллера.

Когда вы используете альтернативу, которую вы упомянули, function SomeControl(...), вы определяете эту именованную функцию. В противном случае Angular должен знать, что ему нужно искать контроллер в модуле myApp.

Лучше использовать синтаксис app.controller('SomeControl', ...), поскольку он не загрязняет глобальное пространство имен.

person Michael Younkin    schedule 03.07.2013

Приведенные выше ответы верны, однако эта ошибка также может произойти:

  1. Если имя контроллера на вашей странице html или jsp и т. д. не соответствует фактическому контроллеру

<div ng-controller="yourControllerName as vm">

  1. Также эта ошибка может произойти, если имя функционального контроллера не соответствует определению контроллера.

angular.module('smart.admin.vip') .controller('yourController', yourController); function yourController($scope, gridSelections, gridCreationService, adminVipService) { var vm = this; activate();

person grepit    schedule 03.09.2015