2015-07-06 5 views
0

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

(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

'контроллера:«модули/приложение/app.controller.js'' должен быть 'контроллер:» appController'', если вы связали этот controller.js в своем приложении. AFAIK –

+0

Спасибо, только что изменил этот, но все тот же результат. Я обновлю сообщение. – babbaggeii

+0

'url: ''' не будет делать это состояние по умолчанию, и он абстрактный, поэтому он не будет загружаться, если вы не находитесь на одном из дочерних маршрутов '/ home'. вы, кажется, не обрабатываете маршрут по умолчанию '/' вообще. – Claies

ответ

-1

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

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

+1

если у вас есть вопросы, их следует добавить как комментарий – gonzofish

+0

Я пробовал, но мне потребовалось 50 реп. –

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 
Смежные вопросы