1

問題

アクションの後にコンポーネントを再レンダリングしようとしていますが、再レンダリングする必要があるテンプレートの部分が更新されていません。これは、作成したヘルパーの結果に由来するか、少なくともそれが原因だと思います。

私のコンポーネントテンプレートには、次のようなものがあります:

{{my-helper value}}

関連するコンポーネント js ファイルには、次のアクションがあります。

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

  this.rerender();
},

どうやってやった

私はそれを行う方法を見つけましたが、奇妙に感じました。アクションでtrueとfalseを切り替えるブーランを使用して、強制的に再レン​​ダリングしています

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 に答える