2014-02-02 6 views
2

После этой строки кода работаетМашинопись конструктор угловой контроллер не выполняет

cockpit.controller('shell', shellCtrl); 

в моем главном модуле, контроллер оболочки зарегистрирован _invokeQueue углового приложения, но код в конструкторе shellCtrl в никогда не срабатывает. Почему бы и нет?

Вот машинописи для shellCtrl

module cockpit { 
'use strict'; 

export class shellCtrl { 
    public static $inject = [ 
     '$location', '$rootScope', '$scope', 
     'localize' 
    ]; 
    public userId = 0; 

    constructor($location, $rootScope, $scope, localize) { 
     $scope.vm = this; 

     $rootScope.$on('localizeResourcesUpdated', function() { 
      $rootScope.title = localize.getLocalizedString('_appTitle_'); 
     }); 
     //If the userid is null go to login 
     if (this.userId == 0) { 
      $location.path('/login'); 
     } 
    } 
} 

}

+0

Не уверен, что сфера именно здесь, но 'shellCtrl' доступен только с объемом' cockpit' или непосредственно: 'cockpit.shellCtrl' , – WiredPrairie

ответ

1

Вам нужно вызвать его из HTML. В основном вам нужен ng-controller="shell" на основе вашего кода.

PS: У меня есть подробное видео по этой теме: http://www.youtube.com/watch?v=WdtVn_8K17E&hd=1

+0

У меня есть ng-controller = shell в представлении. На самом деле shell.html является ng-включенным в index.html, но это должно работать так же. Но даже если бы у меня не было упомянутого контроллера, не должен ли код в конструкторе запускаться при создании объекта? Кстати, это отличное видео. Спасибо. – pthalacker

+0

Контроллер не будет создан, если только он не запрошен – basarat

+0

Теперь я вижу это. Проблема заключается в том, что угловой не может найти контроллер, когда он идет, чтобы связать его с областью действия, хотя я вижу, что он загружен в DOM. – pthalacker

Смежные вопросы