我有一个页面,我必须显示7个系列的总数。 如果在集合中创建了任何新项目,那么我的页面应显示更新的计数。我试过如下骨干系列
this.listenTo(XyzCollection, 'update', function() {
self.lengthVariable = XyzCollection.length;
self.render();
});
这种方法的问题是,如果任何集合的数量是巨大的(比如1000),然后渲染方法获取调用许多次(和总共有7分集是所谓的)。
我也试过
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] –
我正在初始化方法中添加侦听器,并且对于每个集合(7),我将添加侦听器,分别为每个集合更新7个变量 – sk215
'initialize'是什么?路由器?一个看法?其他视图的基本视图?这些存在多少个实例? 'XyzCollection'是一个Collection构造函数或实例吗? (案件可疑)我们需要更多信息来帮助你。如果你说嘿,我在初始化时会这样做,我会发现意想不到的行为,所以我们无法弄清楚这个问题。我们需要看看你在做什么来弄清楚意外行为背后的真正原因...... –