Подтвердить что ты не робот

Использование контроллеров AngularJS, созданных с помощью angular.module(). Controller()

Я все еще очень новичок в AngularJS и работаю над настройкой своего первого приложения. Я хотел бы иметь возможность сделать следующее:

angular.module('App.controllers', [])
  .controller('home', function () {
    $scope.property = true;
  }]);

angular.module('App', ['App.controllers'])
  .config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/', {templateUrl: 'partials/home.html', controller: home});
  }]);

С помощью этой настройки создается следующая ошибка:

Uncaught ReferenceError: home is not defined from App

Мой вопрос: как я могу зарегистрировать контроллеры с помощью angular.module.controller() (или $controllerProvider.register() напрямую) и использовать зарегистрированный контроллер в другом месте в своем приложении.

Моя мотивация: я бы хотел избежать использования глобальных функций-конструкторов в качестве моих контроллеров (как и большинство примеров использования angularjs.org) или сложного пространства имен. Если я могу зарегистрировать и использовать контроллеры в качестве имен отдельных переменных (которые затем не помещаются в глобальную область), это было бы идеально.

4b9b3361

Ответ 1

Попробуйте использовать строковый идентификатор.

routeProvider.when('/', {templateUrl: 'partials/home.html', controller: 'home'});

Когда вы используете литерал, он ищет переменную с именем home, но в этом случае этого не существует.

Ответ 2

Если вы получаете ошибку контроллера, вы не должны указывать имя контроллера в кавычках.

или определите свой контроллер следующим образом

function controllerName()
{
   //your code here
}

ссылайтесь на это: Uncaught ReferenceError: контроллер не определен в AngularJS