1

シナリオは次のとおりです。ページは、集計されたデータをユーザーに表示するウィジェットのコレクションをレンダリングします。このデータは API から取得され、定期的に再計算されます。これらを表示することは問題ありません (stackoverflow の優秀な人々のおかげです) が、サーバーでデータが変更されたときにビューを再レンダリングするのに問題があります。

特に、1 つだけがデータを更新した場合、すべてのページのウィジェット (10 以上になる可能性があります) を再レンダリングしないという、より効率的なアプローチをお勧めします。一定間隔でコレクションをフェッチするのは簡単ですが、変更されたモデルのレンダリングに関するベスト プラクティスは何ですか? 同期機能の上書きに関するさまざまな投稿を見てきましたが、どこに行けばいいのかよくわかりません。

ビューをインプレースで再レンダリングする方法はありますか (ページに再追加するのではなく)。

本当にありがとう

4

2 に答える 2

2

コレクション全体を更新せずに、既存のモデルをコレクションに更新する必要があると思います。ここで私の答えを確認してください。

于 2012-04-14T14:59:09.533 に答える
1

モデル/コレクションの特定の変更にバインドして、ウィジェットのレンダリング メソッドをトリガーできます。たとえば、モデルでは次のようになります。

var Widget1=Backbone.View.extend({
    initialize: function() {
        // all changes on the model will render the widget
        this.model.on("change", this.render, this); 
    },

    render: function() {
        console.log("Render W1");
        this.$el.html("W1 :"+this.model.get("name")+" "+this.model.get("detail"));
        return this;
    }
});
var Widget2=Backbone.View.extend({
    initialize: function() {
        // only a change on `detail` will render the widget
        this.model.on("change:detail", this.render, this);  
    },

    render: function() {
        console.log("Render W2");
        this.$el.html("W2 :"+this.model.get("detail"));
        return this;       
    }
});

http://jsfiddle.net/GqnKC/で遊ぶためのより完全なフィドル

于 2012-04-14T15:03:13.167 に答える