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

时间:2016-09-28 14:38:58

标签: javascript angularjs angular-directive angular-components

请查看plnkr以查看代码。

我在AngularJS组件中真的很新。我写了两个简单的AngularJS组件,它们具有完全相同的绑定。

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

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

object[field] = value

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

我想知道这种行为是预料到的吗?如果有,为什么?或者我错过了什么?。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

此行为是预期的。用“&lt;”表示单向绑定只是意味着angular不会观察组件侧的变化,但如果更改组件侧的对象,原始对象仍将被修改。官方角度文档here中也提到了这一点。

因此,如果您需要使用该对象,建议您复制该对象。最好使用回调函数来更改父对象。这在官方角度文档中也有更详细的解释。