更改动态属性时,组件将重置所有属性

时间:2016-01-29 18:37:59

标签: ember.js ember-cli

我有一个组件,我传递了一些静态和动态参数。组件在交互期间更新这些静态值。当实现组件更新动态参数时,将重置所有静态参数。我希望该组件保留更新的值。

Ember Twiddle

我已经实现了一个只在init期间设置这些值的工作,但我想知道这是否是预期的行为。

1 个答案:

答案 0 :(得分:1)

在ember-twiddle示例中... showYield=false静态值false通过渲染后的动作进行更改。然后更新时间操作在父上下文(控制器)中更改time,导致组件模板重绘(这似乎具有将showYield重置回false的副作用。)< / p>

自从time更改并且time传递给组件后,即使false设置为showYield,组件也会使用true重新呈现动作处理程序{{#outer-component time=time showYield=false}}

因此,最初showYield为false,当传递给组件时,组件具有在组件的上下文中更改showYield的操作。 false始终是假的,它是静态的。因此,在外部上下文(传递到组件中)中更改下一个time,然后(重新)将其传递回组件模板。由于静态值也被(重新)传递回组件,因此它有效地重置。

我不认为您想要混合组件的静态值和动态值。也许在属性中将showYield的默认值定义为false;并使用该属性而不是静态值showYield=property