我对集合中的模型进行了循环,以使用集合描述中的函数fetchAll进行获取。
fetchAll: function(){
this.counter=0;
self = this;
for (var i=0;i<this.models.length; i++){
this.models[i].fetch({
success: function(){
self.counter +=1;
if (self.counter == self.models.length){
alert('done');
self.doneFetchAll = true;
}
}
});
//console.log(i);
}
提取完成后,我看到一个警告,并且集合属性doneFetchAll
设置为true ....但是如何在完成此操作后触发视图渲染?
1)骨干是否有可能听取集合中特定属性的变化,如果是肯定的,再次调用渲染?
OR
2)有没有更好的方法来获取集合中的所有模型然后重新渲染视图?
所有这些听取改变的努力都失败了(盯着视图的initialize: function()
):
this.listenTo(this.collection, "change:doneFetchAll", this.render);
或
this.collection.on("change:doneFetchAll", this.render, this);
感谢。
答案 0 :(得分:1)
尝试使用自定义事件:
fetchAll: function(){
this.counter=0;
self = this;
for (var i=0;i<this.models.length; i++){
this.models[i].fetch({
success: function(){
self.counter +=1;
if (self.counter == self.models.length){
self.trigger('fetchAll'); // here
self.doneFetchAll = true;
}
}
});
//console.log(i);
}
然后在initialize: function()
:
this.listenTo(this.collection, "fetchAll", this.render);
答案 1 :(得分:0)
你不能只听&#34;同步&#34; event而不是fetchAll?
this.listenTo(this.collection, "sync", this.render)?