2013-02-18 115 views
2

我有一个叫做'user'的模型,'user'有一个名为'login'的控制器和一个名为'userMenu'的指令,我试图实现的是userMenu指令使用模块中提供的控制器“登录”。也许我不明白如何很好的模块和指令应该工作,但我做了以下内容: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 

请你指导我采用直销tives和模块内的控制器?

回答

3

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

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

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

+0

你是完全正确的,谢谢!我不知道它是再次定义模块:D – fixmycode 2013-02-18 16:10:13

相关问题