标题可能有点误导,但我想不出更好的描述。
我写了一个包含ng-repeat
:
app.directive('appDirective',function($purr){
var template = '' +
'<div ng-repeat="elements in queue">' +
'</div>';
return{
template: template
}
});
如果我是正确的,我可以选择两种方式为我的指令提供queue
1:通过链接功能
return{
restrict: 'A',
template: template,
link: function(scope){
scope.queue =[];
}
}
2:通过控制器
return{
restrict: 'A',
template: template,
controller: directiveCtrl
}
app.controller('directiveCtrl',function($scope){
$scope.queue = [];
});
我应该选择哪种方式?为什么?
答案 0 :(得分:1)
指令的链接功能和控制器功能之间几乎没有区别。通常,您可以将方法,$ watch等放入其中。控制器将首先运行,这有时很重要。您可能希望将范围操作函数放在控制器中,以便与框架的其余部分保持一致。
当控制器和链接函数使用两个嵌套指令运行时,This fiddle会记录。
另见Difference between the 'controller', 'link' and 'compile' functions when defining a directive
.