2

我有一个名为'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

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

4

1 回答 1

3

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

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

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

于 2013-02-18T13:38:38.917 回答