問題
アクションの後にコンポーネントを再レンダリングしようとしていますが、再レンダリングする必要があるテンプレートの部分が更新されていません。これは、作成したヘルパーの結果に由来するか、少なくともそれが原因だと思います。
私のコンポーネントテンプレートには、次のようなものがあります:
{{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}}
それは正しい方法ですか?