【问题标题】:Component resets all attributes when a dynamic attribute is changed更改动态属性时,组件会重置所有属性
【发布时间】:2016-01-29 18:37:58
【问题描述】:

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

Ember Twiddle

我已经解决了这些值仅在初始化期间设置的工作,但我想知道这是否是预期的行为。

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    在 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-community-slackin.herokuapp.com 看看其他开发者的想法。
    • 感谢您指导我在哪里提问以及如何向社区提问。这让我对正在发生的事情有了更好的了解。
    • 从聊天讨论中......“一种思考方式是静态变量是你说某事不是可变的方式”
    猜你喜欢
    • 2019-08-11
    • 2021-08-14
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2013-06-29
    • 1970-01-01
    相关资源
    最近更新 更多