1

问题

我试图在一个动作之后重新渲染一个组件,但是我需要重新渲染的模板部分没有更新,因为它来自我制作的助手的结果,或者至少我认为是因为这个。

在我的组件模板中,我有这样的东西:

{{my-helper value}}

在关联的组件 js 文件中,我有这个动作:

fillGrid(location, length) {
  /* logic */

  this.rerender();
},

我是怎么做的

我找到了一种方法来做到这一点,但感觉很奇怪,我使用了一个布尔值,我在动作中在真假之间切换以强制重新渲染

fillGrid(location, length) {
    let me = this;
    this.set('show', false);

    /* logic */

    Ember.run.later(function() {
      me.set('show', true);
      me.rerender();
    }, 10);
}

在模板中:

{{#if show}}
    {{my-helper value}}
{{/if}}

这是正确的方法吗?

4

1 回答 1

0

您不需要this.rerender()显式调用。如果您更改了value属性,my-helper则将自动调用以重新计算,并将显示在组件模板中。

于 2017-03-19T05:43:14.087 回答