Angularjs指令隔离了父范围内的范围和影响

时间:2014-04-14 09:24:22

标签: angularjs angularjs-directive angularjs-scope

指令中有一个隔离范围的行为,我不明白=属性。

我有一个带有隔离范围的指令和两个属性:

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之间添加中间级别和对象。

谢谢:)

1 个答案:

答案 0 :(得分:0)

我猜你正在使用基元作为属性值而不是对象。如果是这样,你看到的是由子范围覆盖原语。有关详细信息,请参阅此帖子(特别是第二个答案):

What is the angularjs way to databind many inputs?