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

Component resets all attributes when a dynamic attribute is changed

我有一个传递一些静态和动态参数的组件。组件在交互过程中更新这些静态值。当执行组件更新动态参数时,将重置所有静态参数。我希望该组件保留更新后的值。

Ember Twiddle

我已经实施了一项解决方案,仅在初始化期间设置这些值,但我想知道这是否是预期的行为。

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

由于 time 被更改并且 time 被传递给组件,组件使用 false 重新呈现,即使在 showYield 设置为 true 之后来自动作处理程序。 {{#outer-component time=time showYield=false}}

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

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