请查看plnkr以查看代码。
我在AngularJS组件中真的很新。我写了两个简单的AngularJS组件,它们具有完全相同的绑定。
bindings: { value:'@', field:'@', object: '<', callback: '&' }
我通过object
将Javascript对象传递给我的组件。 field
指定JS对象中的属性名称。最后,value
引用了JS对象属性的新值。
object[field] = value
如果组件未克隆其控制器中的object
,则单向绑定不起作用(请参阅plnkr中的onewaybindingfail
组件)。但是,通过克隆组件控制器中的object
,一切都很好。
我想知道这种行为是预料到的吗?如果有,为什么?或者我错过了什么?。
感谢您的帮助。
答案 0 :(得分:3)
此行为是预期的。用“&lt;”表示单向绑定只是意味着angular不会观察组件侧的变化,但如果更改组件侧的对象,原始对象仍将被修改。官方角度文档here中也提到了这一点。
因此,如果您需要使用该对象,建议您复制该对象。最好使用回调函数来更改父对象。这在官方角度文档中也有更详细的解释。