当绑定项是对象并动态修改时,单向绑定不起作用

one-way binding does not work when binding item is object and modified dynamically

本文关键字:绑定 不起作用 修改 动态 对象      更新时间:2023-09-26

请参阅PLNKR查看代码。

我在AngularJS组件真的很新。我用完全相同的绑定编写了两个简单的AngularJS组件。

 bindings: { value:'@', field:'@', object: '<', callback: '&' }   

我将一个Javascript对象通过object传递给我的组件。field指定了JS对象中属性的名称。最后,value是JS对象属性的新值。

object[field] = value

如果组件不克隆其控制器中的object,则单向绑定不起作用(参见plnkr中的onewaybindingfail组件)。然而,通过在组件的控制器中克隆object,一切都很好。

我想知道这种行为是预期的吗?如果是,为什么?还是我错过了什么?

谢谢你的帮助。

这种行为是预期的。用"<"表示单向绑定仅仅意味着angular不会监视组件端的变化,但是如果你在组件端改变了对象,原始对象仍然会被修改。这在angular官方文档中也有提到。

因此,如果需要使用该对象,建议创建该对象的副本。最好使用回调函数对父对象进行更改。这在angular官方文档中也有更详细的解释。