如何使用 Backbone 预取集合
How to prefetch on a collection using Backbone
我有以下方法对我的集合执行提取,然后调用 render
函数来显示结果。这一切工作正常,每次用户到达页面底部时都会触发。
然而,在此次提取过程中,我想预提取下一批项目,以便用户获得更好的体验。我不确定如何实现这一目标。我考虑过再做一个 this.collection.fetch
(检查我的代码),然后将结果分配给一个变量,但我不确定这是否是不好的做法。
然后我也许可以参考这个变量,看看下次用户到达页面底部时它是否有任何内容?
有没有人做过类似的事情可以给我一些指导?
loadItems: function() {
var that = this;
this.collection.fetch({
data: {"offset": this.offset, "limit": this.limit},
success: function () {
that.render();
that.offset += that.limit;
//Maybe I can do another fetch here
this.collection.fetch({
data: {"skip": this.skip, "limit": this.limit, "sort": this.sortKey}
success: function () {
//However I'm not really sure how I would get the results and assign them to a variable
}
});
}
});
},
render: function() {
var self = this;
_(this.collection.models).each(function(product){
self.appendItem(product);
}, this);
},
appendItem: function(product) {
var productView = new ProductView({
model: product
});
$(this.el).find(".products-list").append(productView.render().el);
}
为什么在主页加载时不抓取?
var 数据 = collection.fetch();
当它触底时你 view.render(更新);然后通过再次获取数据更新数据 = collection.fetch();
因此数据保持收集状态,当它第二次触底时,它将显示已经获取并存储在数据中的内容,然后再次获取并更新数据以供下一次触底...
var data;
collection.fetch({
success: function(model) {
data=model.toJSON();
}
})
我有以下方法对我的集合执行提取,然后调用 render
函数来显示结果。这一切工作正常,每次用户到达页面底部时都会触发。
然而,在此次提取过程中,我想预提取下一批项目,以便用户获得更好的体验。我不确定如何实现这一目标。我考虑过再做一个 this.collection.fetch
(检查我的代码),然后将结果分配给一个变量,但我不确定这是否是不好的做法。
然后我也许可以参考这个变量,看看下次用户到达页面底部时它是否有任何内容?
有没有人做过类似的事情可以给我一些指导?
loadItems: function() {
var that = this;
this.collection.fetch({
data: {"offset": this.offset, "limit": this.limit},
success: function () {
that.render();
that.offset += that.limit;
//Maybe I can do another fetch here
this.collection.fetch({
data: {"skip": this.skip, "limit": this.limit, "sort": this.sortKey}
success: function () {
//However I'm not really sure how I would get the results and assign them to a variable
}
});
}
});
},
render: function() {
var self = this;
_(this.collection.models).each(function(product){
self.appendItem(product);
}, this);
},
appendItem: function(product) {
var productView = new ProductView({
model: product
});
$(this.el).find(".products-list").append(productView.render().el);
}
为什么在主页加载时不抓取?
var 数据 = collection.fetch();
当它触底时你 view.render(更新);然后通过再次获取数据更新数据 = collection.fetch();
因此数据保持收集状态,当它第二次触底时,它将显示已经获取并存储在数据中的内容,然后再次获取并更新数据以供下一次触底...
var data;
collection.fetch({
success: function(model) {
data=model.toJSON();
}
})