シナリオ:
- メモのコレクション (非同期ロード) がレンダリングされます
- 2 つのビュー: ノートのリストを表す NoteView と単一のノートを表す NoteOnListView
- それらを配置するためにいくつかのコード(masonry.js)を実行する必要がありますが、最初にすべてのメモをレンダリングする必要があり、それらの子の数とプロパティを知る必要があります
テンプレートnotes.hjsがあります。
{{#each note in controller}}
{{view App.NoteOnListView}}
{{/each}}
ビュー:
App.NotesView = Ember.View.extend({
didInsertElement: function() {
console.log('the list has been rendered');
}
});
App.NoteOnListView = Ember.View.extend({
didInsertElement: function() {
console.log('a note has been inserted');
},
afterRender: function() {
console.log('a note has been rendered');
}
});
コンソール出力:
the list has been rendered
XHR finished loading: "http://localhost:3000/notes"
a note has been rendered
a note has been inserted
a note has been rendered
a note has been inserted
// ...
a note has been rendered
a note has been inserted
// This is where I need to run code!
この問題に対するいくつかの可能な解決策がありますが、それらはすべてハックに見えます。すべての子がレンダリングされるまで NotesView に待機させる良い方法はありますか?