指令=或= attr不是双向的

时间:2013-05-30 15:52:51

标签: angularjs angularjs-directive

  

=或= attr - 在本地范围之间设置双向绑定   属性和通过值定义的name的父范围属性   oftr属性。 ...对parentModel的任何更改都将是   反映在localModel中,localModel中的任何更改都会反映出来   parentModel。

这是来自Angular文档,我读了一些帖子,说你在创建带有指令的隔离范围时不会得到双向绑定。我发现很难理解。我想创建一个小部件,传入状态,但我也希望能够将该状态绑定到父作用域中的其他指令。

从我的实验中你不能对指令中的范围进行更改,并在其父控制器/其他指令中选择更改。这是对的吗?

1 个答案:

答案 0 :(得分:2)

是的,并且没有一个隔离范围(例如,你已经在你的指令中添加了一个范围:{})只是一个未在原型继承链中链接的单个范围。这意味着默认情况下,您对指令中作用域所做的更改不会反映回此指令的父元素范围。

作用域创建中的'='locals类型设置与父作用域的可见绑定。然后将反映对隔离范围变量的更改。确保您的更改被指令中的本地范围识别,否则任何内容都不会传播(例如,尝试观察/ $观察locals变量以确保指令发生更改,如果不是,您可能需要申请$取决于如何你已经在你的指令中绑定了。)