在ember 1.13中的奇怪行为。*

时间:2016-08-03 17:06:37

标签: ember.js ember-components

我有一个ApplicationControllercontrollerInt属性的控制器controllerString

我的组件RedSquareComponent包含componentIntcomponentString属性。

我通过hbs-template controllerIntcontrollerStringcomponentInt绑定到componentStringcomponentString=controllerString="VALUE FROM CONTROLLER"

RedSquareComponent我还有.on('init')方法,将"SET ON INIT"值设置为componentString

我已经向组件添加了一个操作来处​​理点击某个对象(红色方块)并将某个值(例如,1)设置为componentInt

但是当此操作有效时 - componentString也会发生变化(我不知道原因),并且等于"VALUE FROM CONTROLLER"

这是一种真正预期的行为吗?

相同的代码在Ember 12.4上工作正常,但我已在几个13. *版本上检查过它 - 它不起作用。

https://jsfiddle.net/AlexeyBedonik/a23ev98w/3/

1 个答案:

答案 0 :(得分:0)

在您的情况下,如果您只是将.on('init')部分更改为.on('didInsertElement'),它将解决您的问题。(这意味着它会将控制器和组件componentString属性更新为' SET ON INIT'。)
但是,您不应更改已弃用的父级的值。所以你会得到弃用警告。

要获取有关此问题/错误follow this discussion的更多信息。

遵循/理解以下概念是件好事。

1)默认情况下将属性传递给组件two-way data binding
2)要更新数据,请始终遵循数据向下操作向上原则(DDAU