当绑定项是对象并动态修改时,单向绑定不起作用
one-way binding does not work when binding item is object and modified dynamically
请参阅PLNKR查看代码。
我在AngularJS组件真的很新。我用完全相同的绑定编写了两个简单的AngularJS组件。
bindings: { value:'@', field:'@', object: '<', callback: '&' }
我将一个Javascript对象通过object
传递给我的组件。field
指定了JS对象中属性的名称。最后,value
是JS对象属性的新值。
object[field] = value
如果组件不克隆其控制器中的object
,则单向绑定不起作用(参见plnkr中的onewaybindingfail
组件)。然而,通过在组件的控制器中克隆object
,一切都很好。
我想知道这种行为是预期的吗?如果是,为什么?还是我错过了什么?
谢谢你的帮助。
这种行为是预期的。用"<"表示单向绑定仅仅意味着angular不会监视组件端的变化,但是如果你在组件端改变了对象,原始对象仍然会被修改。这在angular官方文档中也有提到。
因此,如果需要使用该对象,建议创建该对象的副本。最好使用回调函数对父对象进行更改。这在angular官方文档中也有更详细的解释。
相关文章:
- 对象文字方法上的Javascript绑定不起作用
- Knockout输入绑定不起作用
- 角度指令双向绑定不起作用
- 指令中选择输入的双向绑定不起作用
- Angularjs:ui路由嵌套状态下的绑定不起作用
- 为什么我的淘汰选项绑定不起作用
- jQuery Ajax 元素的后期绑定不起作用
- 样式绑定不起作用
- 在内联编辑的情况下,Knockout绑定不起作用
- 指令链接中的绑定不起作用
- Angular 1.5组件双向绑定不起作用
- 点击处理程序多次触发,解除绑定不起作用
- KnockoutJS - 引导程序 3 模式绑定不起作用
- foreach:绑定不起作用 ko.mapping.fromJS 数据
- 虚拟元素的挖空绑定不起作用
- 委托的“模板”绑定不起作用
- Angularjs 双向数据绑定不起作用;$watch也不起作用
- 使用 D3js 时,带有 DOM 的 AngularJS 数据绑定不起作用
- 视频播放事件中的 Angular 2 路绑定不起作用
- 如果语句和挖空中的可见绑定不起作用