0

我有一个ApplicationController带有controllerIntcontrollerString属性的控制器。

我有一个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/

4

1 回答 1

0

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

要获取有关此问题/错误的更多信息,请遵循此讨论

遵循/理解以下概念很好。

1) 默认情况下将属性传递给组件是双向数据绑定
2) 更新数据始终遵循 Data Down Actions Up 原则 ( DDAU )

于 2016-08-06T15:41:11.277 回答