【问题标题】:AngularJS calling a controller from a directiveAngularJS 从指令调用控制器
【发布时间】:2013-02-18 21:38:38
【问题描述】:

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

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

【问题讨论】:

    标签: javascript angularjs controllers


    【解决方案1】:

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

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

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

    【讨论】:

    • 您完全正确,谢谢!我不知道它再次定义了模块:D
    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多