【发布时间】:2015-06-11 00:51:20
【问题描述】:
全部:
我是 AngularJS 指令作用域的新手,我想知道当多个独立作用域指令分配给同一个元素时 AngularJS 如何处理作用域。
例如:
app.controller("main", function($scope){
$scope.data = [
{
id:"id_1"
},
{
id:"id_2"
},
{
id:"id_3"
},
{
id:"id_4"
}
];
});
app.directive("isodir", function(){
return {
restrict:"AE",
scope: {},
controller: function($scope){$scope.d = {id:"isodir_id"} },
link: function(scope, EL, attrs){}
}
});
HTML部分是:
<isodir ng-repeat="d in data track by $index">{{d.id}}</isodir>
<isodir>{{d.id}}</isodir>
让我很困惑的主要有两个问题:
[1] 对于 html 部分[1]:带有 ng-repeat 的那个,谁能给我 关于如何 AngularJS 决定使用谁的范围的一些解释,因为 ng-repeat 和 isodir 都是孤立的范围(根据结果, 但事实证明,ng-repeat 范围被应用了,我想知道为什么 未应用 isodir);有时,如果我使用两个指令都带有隔离 作用域,AngularJS 会报错。 但是 ng-repeat 不报告 错误。
[2] 对于 html 部分[2]:没有 ng-repeat 的部分,让我们说我 毫无疑问地接受关于 part[1] 的事实,那么这意味着 ng-repeat 范围内的 d 被渲染到 {{d.id}},但在部分 [2], 我在 isodir 控制器中定义了 $scope.d,但是 为什么 这个 d 可以不 用作 {{d.id}}
的值
谢谢
【问题讨论】:
-
1)
ng-repeat绝对不使用隔离范围。 2) 隔离作用域不继承任何父作用域,并且不得共享 -
@Phil 您能否更详细地解释在我的示例中启动 angularJS 时整个过程是如何运行的?
标签: angularjs angularjs-directive angularjs-scope