2013-02-18 112 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

相關問題