= or =attr - set up bi-directional binding between a local scope property and the parent scope property of name defined via the value of the attr attribute. ... Any changes to parentModel will be reflected in localModel and any changes in localModel will reflect in parentModel.
这是来自 Angular 文档,我读过一些文章,其中说在使用指令创建隔离范围时不会获得双向绑定(bind)。我觉得很难理解。我想创建一个小部件,传入状态,但我也希望能够将该状态绑定(bind)到父作用域中的其他指令。
根据我的实验,您无法更改指令中的范围并获取其父 Controller /其他指令中的更改。这是正确的吗?
最佳答案
是或否, Angular 中的隔离作用域(例如,您在指令中添加了作用域:{})就是这样,一个未链接到原型(prototype)继承链中的单独作用域。这意味着默认情况下,您对指令中的范围所做的更改不会反射(reflect)回该指令的父元素的范围中。
作用域创建中的“=”本地类型设置了到父作用域的可见绑定(bind)。然后对隔离范围变量的更改将被反射回来。确保指令中的本地范围能够识别您的更改,否则不会传播任何内容(例如,尝试监视/$watch 本地变量以确保指令中发生更改,如果没有,您可能需要 $apply,具体取决于如何您已在指令范围内进行了约束)。
关于angularjs - 指令 = 或 =attr 不是双向的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16840662/