如何在ember中以单向绑定/完全没有绑定的方式将数据传递给组件?

Pra*_*mar 3 ember.js ember.js-component

在模板中,我将组件称为:

{{comp-name data=controllerData}}
Run Code Online (Sandbox Code Playgroud)

如果我更改组件中的数据,控制器controllerData也会因隐式双向绑定而发生更改.我有两个问题:

1)如何使其成为单向绑定.因此,只有从控制器的变化controllerData传播到组件的数据.

2)应该没有任何约束力.意味着,如果我更改组件或控制器中的数据.它不应该反映在其他事物中.

Gau*_*rav 10

1)使用readonly帮助者:

{{comp-name data=(readonly controllerData)}}
Run Code Online (Sandbox Code Playgroud)

2)使用unbound帮助者:

{{comp-name data=(unbound controllerData)}}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://emberup.co/bindings-with-htmlbars-helpers/.

在具有角括号组件的Ember的未来版本中,默认情况下绑定将是一种方式,您将需要使用mut帮助程序使其成为双向.

  • 是的,这是正确和预期的.如果你想要这样的东西工作,你将不得不使用不可变的库,如Facebook的immutable.js或无缝不可变.引用与对象的绑定是一种方式,但如果对象本身是可变的,则其变化会被传播. (2认同)