2013-02-18 4 views
2

У меня есть модель под названием «пользователь», «пользователь» имеет контроллер под названием «login» и директиву «userMenu», чего я пытаюсь достичь, так это то, что в директиве userMenu используется контроллер «login», доступный в модуле. Может быть, я не очень хорошо понимаю, как модули и директивы должны работать, но я делаю следующее:AngularJS, вызывающий контроллер из директивы

Во-первых, я определяю мой контроллер, как это:

angular.module('user', []). 
controller('login', ['$scope', '$http', function($scope, $http){ 
    $scope.logIn = function(){ 
     //Do something... 
    } 
} 

Тогда в моей директиве ...

angular.module('user', []). 
directive('userMenu', function(){ 
    return { 
    priority: 0, 
    templateUrl: 'app/includes/user/menu.html', 
    replace: true, 
    restrict: 'A', 
    controller: 'login', 
    } 
}); 

Но я получаю это:

Error: Argument 'login' is not a function, got undefined 

могли бы вы направить меня на использование Direc трендов и контроллеров в рамках модулей?

ответ

3

Проблема заключается в том, что вы переформатируете директиву user при подготовке своей директивы. Я предполагаю, что вы хотели зарегистрировать как контроллер, так и директиву в том же модуле. В этом случае вы можете зарегистрировать свою директиву, как это:

angular.module('user').directive('userMenu', function(){ 
    return { 
    ... 
    } 
}); 

Обратите внимание, что нет второго аргумента ([]) для вызова angular.module, который означает, что вы хотите получить экземпляр уже определенный модуля вместо того, чтобы определять новый.

+0

Вы были абсолютно правы, спасибо! Я не знал, что он снова определяет модуль: D – fixmycode

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