指令中有一个隔离范围的行为,我不明白=属性。
我有一个带有隔离范围的指令和两个属性:
scope: {
attr1: '=',
attr2: '='
}
也许我错了,但我期望指令模板中的attr1和attr2对象的修改将传输到原始对象。
例如:
<directivename attr1="anObject" attr2="anotherObject" />
我期望指令中的attr1和attr2的修改也可以在'anObject'和'anotherObject'中使用,但似乎并非如此。
但是我注意到如果我向anObject和anotherObject添加一个级别
<directivename attr1="foo.anObject" attr2="foo.anotherObject" />
然后指令的attr1和attr2模板中的任何修改都被传送到$ scope.foo.anObject和$ scope.foo.anotherObject。
有人可以解释一下为什么会这样,并告诉我强制从指令传递修改到原始对象的好方法是什么,而不必强制指令的调用者在$ scope之间添加中间级别和对象。
谢谢:)
答案 0 :(得分:0)
我猜你正在使用基元作为属性值而不是对象。如果是这样,你看到的是由子范围覆盖原语。有关详细信息,请参阅此帖子(特别是第二个答案):