组件在更改动态属性时重置所有属性
Component resets all attributes when a dynamic attribute is changed
我有一个传递一些静态和动态参数的组件。组件在交互过程中更新这些静态值。当执行组件更新动态参数时,将重置所有静态参数。我希望该组件保留更新后的值。
我已经实施了一项解决方案,仅在初始化期间设置这些值,但我想知道这是否是预期的行为。
在 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
.
我有一个传递一些静态和动态参数的组件。组件在交互过程中更新这些静态值。当执行组件更新动态参数时,将重置所有静态参数。我希望该组件保留更新后的值。
我已经实施了一项解决方案,仅在初始化期间设置这些值,但我想知道这是否是预期的行为。
在 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
.