私は7つのコレクションの合計数を表示する必要があるページがあります。 コレクションに新しいアイテムが作成された場合、更新されたカウントがページに表示されます。すべてのコレクションのカウントが(たとえば1000)巨大であれば、その後renderメソッドは、多くの時間が(となるように、合計7つのコレクションがあると呼ばなっているされてバックボーンコレクション
this.listenTo(XyzCollection, 'update', function() {
self.lengthVariable = XyzCollection.length;
self.render();
});
この方法の問題点を次のように私が試しましたと呼ばれる)。
私も
this.listenTo(XyzCollection, 'update', function() {
self.lengthVariable = XyzCollection.length;
//self.render();
});
すなわち、ちょうど変数を更新しますが、ページdose'ntがリフレッシュ取得し、私は0としてカウントを参照して、テンプレートに(私はレンダリングコメント)を試してみました。次のように
ある
の例では、初期化シナリオを達成し、ビューをレンダリングするための適切な方法を提案してください:
initialize: function() {
xxx1Collection.refresh();
xxx2Collection.refresh();
xxx3Collection.refresh();
xxx4Collection.refresh();
xxx5Collection.refresh();
xxx6Collection.refresh();
xxx7Collection.refresh();
var self = this;
this.listenTo(xxx1Collection, 'update', function() {
self.var1 = xxx1Collection.length;
self.render();
});
this.listenTo(xxx2Collection, 'update', function() {
self.var2 = xxx2Collection.length;
self.render();
});
this.listenTo(xxx3Collection, 'update', function() {
self.var3 = xxx3Collection.length;
self.render();
});
this.listenTo(xxx4Collection, 'update', function() {
self.var4 = xxx4Collection.length;
self.render();
});
this.listenTo(xxx5Collection, 'update', function() {
self.var5 = xxx5Collection.length;
self.render();
});
this.listenTo(xxx6Collection, 'update', function() {
self.var6 = xxx6Collection.length;
self.render();
});
this.listenTo(xxx7Collection, 'update', function() {
self.var7 = xxx4Collection.length;
self.render();
});
},
render: function() {
this.$el.html(this.template({
count1: self.var1,
count2: self.var2,
count3: self.var3,
count4: self.var4,
count5: self.var5,
count6: self.var6,
count7: self.var7,
}));
}
ここで、このリスナーを追加していますか?あなたはそれを何度も追加しているように見えます。そうでなければ、それは何度も呼び出されるべきではありません。 [mcve]を提供してください –
私はinitializeメソッドでリスナーを追加しています。コレクションごとに(7)、リスナーを追加して、それぞれのコレクションの7つの変数を更新します。 – sk215
何が 'initialize'ですか?ルータ?ビュー?他のビューの基本ビュー?どれくらいのインスタンスが存在しますか? 'XyzCollection'はCollectionコンストラクタかインスタンスですか? (事件は疑わしい)あなたを助けるために、より多くの情報が必要です。私が初期化でこれをやっていると言って、予期しない動作が起こっていると言うなら、問題を理解することはできません。予期しない動作の背後にある実際の原因を理解するためにあなたが何をしているのかを確認する必要があります... –