4

シナリオ:

  • メモのコレクション (非同期ロード) がレンダリングされます
  • 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 に待機させる良い方法はありますか?

4

1 に答える 1