AngularJS -Контроллер не вызывается

0

Я только начинаю проект с помощью простого кода, но я стараюсь правильно его подключить. Вот мой код module.js:

(function() {

    'use strict';

    angular
        .module('app')
        .config(['$stateProvider', function appRouter($stateProvider) {

            $stateProvider

                .state('app', {

                    abstract: true,
                    url: '',
                    templateUrl: 'modules/app/index.html',
                    controller: 'appController'

                })

                .state('app.home', {

                    url: '/home',
                    templateUrl: 'modules/home/index.html',
                    controller: 'homeController'

                })

        }]);

})();

Итак, код в функции appController (ниже) должен быть запущен, но я ничего не получаю в консоли. Что я делаю не так?

app.controller.js:

(function() {

    'use strict';

    angular
        .module('app')
        .controller('appController', appController);

        appController.$inject = [];

        function appController() {
            console.log('appController');    
        }

})();

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

Теги:

2 ответа

0

Я думаю, что проблема, с которой вы можете столкнуться, заключается в том, что вы не создаете то, что я называю "корень", определение angular.module.

В коде модуля вы ставите:

(function() {

    'use strict';

    angular
        .module('app')

// omitted for brevity

И затем в вашем контроллере у вас есть:

(function() {

    'use strict';

    angular
        .module('app')

// omitted for brevity

Я не помню его точно, но я думаю, что он рассматривает второй вызов .module как другой или новый модуль.

Если вы измените вызов модуля .module чтобы иметь [] в качестве второго параметра, он должен работать:

(function() {

    'use strict';

    angular
        .module('app', [])

// omitted for brevity
-2

Вы получили доступ к "домашнему" состоянию? Потому что, если вы этого не сделаете, вы ничего не получаете, поскольку состояние "приложение" (и его контроллер) не будет создаваться, если не будет зарегистрировано дочернее состояние (в данном случае "домашний") (поскольку "приложение" является абстрактным).

Не могли бы вы показать свое приложение /index.html и ваш home/index.html?

  • 1
    если у вас есть вопросы, они должны быть добавлены в качестве комментария
  • 0
    Я пытался, но мне потребовалось 50 повторений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню