0

次のバックボーン ビューがあります。

var app = app || {};

app.QuestionListView = Backbone.View.extend({
    tagName: 'ul',

    initialize: function() {
        this.listenTo(this.collection, 'sync', this.render);
    },

    render: function(e) {
        this.collection.each(function(model) {
            var q = new app.QuestionItemView({model: model});
            q.render();
        });
    }
});

コレクションを繰り返し処理し、コレクション内のすべてのモデルにリスト要素を挿入しようとしています。私が現在実装している方法では、コレクション ビューがレンダリングされるたびに、各モデル ビューを再作成する必要があります。モデルビューが作成されると、再初期化されたり、リンクされているモデルを再フェッチしたりせずにレンダリングされるように、どのように実装しますか?

私の最初の試みは、initialize関数でモデルを作成することでした。ただし、モデルビューにモデルを提供するのに間に合うようにコレクションが設定されていないため、これは機能しません。

4

1 に答える 1

1

コレクション ビューの initialize メソッドでコレクションのリセット イベントをリッスンし、各 QuestionItemView の initialize メソッドで render を呼び出します。リセットが発生すると、コレクションの準備が整います。

QuestionListViewで:

initialize: function () {
    this.listenTo(this.collection, 'reset', this.render);
}

QuestionItemViewで:

initialize: function () {
    this.render();
}
于 2013-09-08T04:37:32.323 に答える