我有一个ApplicationController
和controllerInt
属性的控制器controllerString
。
我的组件RedSquareComponent
包含componentInt
和componentString
属性。
我通过hbs-template controllerInt
将controllerString
和componentInt
绑定到componentString
和componentString=controllerString="VALUE FROM CONTROLLER"
。
在RedSquareComponent
我还有.on('init')
方法,将"SET ON INIT"
值设置为componentString
。
我已经向组件添加了一个操作来处理点击某个对象(红色方块)并将某个值(例如,1)设置为componentInt
。
但是当此操作有效时 - componentString
也会发生变化(我不知道原因),并且等于"VALUE FROM CONTROLLER"
。
这是一种真正预期的行为吗?
相同的代码在Ember 12.4上工作正常,但我已在几个13. *版本上检查过它 - 它不起作用。
答案 0 :(得分:0)
在您的情况下,如果您只是将.on('init')
部分更改为.on('didInsertElement')
,它将解决您的问题。(这意味着它会将控制器和组件componentString
属性更新为' SET ON INIT'。)
但是,您不应更改已弃用的父级的值。所以你会得到弃用警告。
要获取有关此问题/错误follow this discussion的更多信息。
遵循/理解以下概念是件好事。
1)默认情况下将属性传递给组件two-way data binding
2)要更新数据,请始终遵循数据向下操作向上原则(DDAU)