当定义一个 ng-repeat 指令来迭代一个数组时,语法指定ng-repeat="friend in friends"
,然后在模板中使用 interoplation 运算符,如下所示{{friend.name}}
。
是否可以将属性分配给当前项目范围,而不是其中的变量?所以我可以打电话{{name}}
而不是{{friend.name}}
?
原因是我的指令在两个不同模板的范围内使用 - 例如,我可能有一个指令"userActions"
既用于转发器,也用于不相关的模板,{{friend.name}}
但没有意义。我想避免人为地制造friend
没有语义的对象。
我的用例是这样的:
我有一个渲染各种类型块的网格。一些伪代码:
<div ng-repeat="block in blocks">
< cat block />
< friend block >
<userActions directive />
</ friend block >
< guitar block />
.... more blocks
</div>
我还有一个朋友页面,其中包含完全相同的用户操作:
..fragment of friend page..
<element ng-control="friend">
<userActions directive />
</element>
现在,如果我想使用中继器内块的属性,语法是{{block.name}}
. 所以模板userActions
包含这个。
但是,一旦我在朋友页面中使用了这个模板,我必须{{block.name}}
在朋友控制器的范围内创建。但这没有意义,因为块仅存在于块网格的上下文中。我不应该创建这个block
。
我想要做的只是{{name}}
从userActions
指令模板中调用,因为块范围和控制器都包含它。我不想创建一个对象,然后在我想使用该指令的每个范围内block
人为地设置。block.name
userActions
这是一个jsFiddle 来说明原因