angularjs - 指令 = 或 =attr 不是双向的

标签 angularjs angularjs-directive

= 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/

相关文章:

javascript - 两次之间的小时差(HH :MM:SS a)in momentjs

javascript - Angular 表单未提交

javascript - AngularJS 指令模拟单选按钮

javascript - 指令之间的连接(Angular 1.4.8)

javascript - 类型错误 : Cannot read property 'TigerNo' of undefined tempObj ['TigerNo' ] = this. getDefault(sportsRecord).TigerNo

AngularJs 通过类名获取元素的数量

javascript - 为什么需要使用工厂函数指定 Angular 模块,而不是像我指定 Node 模块那样?

javascript - angularjs - 自定义指令名称 "smart-float"

Angular js : cannot call method from list comprehension in select

jquery - 全日历重新获取事件回调