选择指令范围
Choosing a directive scope
标题可能有点误导,但我想不出更好的描述了。
我写了一个指令,其中包括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 = [];
});
我应该选择哪种方式,为什么?
指令的链接函数和控制器函数之间几乎没有区别。通常,您可以将方法、$watch等放入其中。控制器将首先运行,这有时很重要。您可能希望将作用域操作函数放在控制器中,只是为了与框架的其他部分保持一致。
当控制器和链接函数使用两个嵌套指令运行时,该fiddle会进行日志记录。
另请参阅';控制器'';链接';和';编译';定义指令时的功能
.
相关文章:
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- AngularJS指令范围约束问题重复出现
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- AngularJS:从控制器访问特定的指令范围
- AngularJS:从指令设置范围变量
- AngularJS在指令模板中修改范围
- 基于范围数据更改指令模板中的元素
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 日期-时间范围指令字段未显示任何值
- 从父控制器传递工厂数据以隔离范围指令
- 从子元素访问范围指令
- AngularJS在父级和子级范围指令之间共享数据
- 隔离范围指令会导致业力错误
- 范围$指令中的watch't在AJAX请求后被调用
- 如何在AngularJS中对隔离范围指令进行单元测试
- AngularJS隔离范围指令
- 从隔离范围指令中的更改更改控制器变量值
- 美元的范围.指令中的项未定义