AngularJS从指令调用控制器

时间:2013-02-18 13:14:20

标签: javascript angularjs controllers

我有一个名为'user'的模型,'user'有一个名为'login'的控制器和一个名为'userMenu'的指令,我想要实现的是userMenu指令使用可用的控制器'login'在模块中。也许我不太清楚模块和指令应该如何工作但我正在做以下事情:

首先,我将控制器定义为:

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

请您指导我在模块中使用指令和控制器吗?

1 个答案:

答案 0 :(得分:3)

问题是您在准备指令时正在重新定义user指令。我认为你想在同一个模块上注册一个控制器和一个指令。如果是这样,您可以像这样注册您的指令:

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

请注意,angular.module的调用没有第二个参数([]),这意味着您要检索已定义模块的实例,而不是定义新模块的实例。