如果我们可以将一定长度的集合传递给视图吗?
我正在尝试实现分页,这就是为什么我不想传递整个集合。
var <new View> = new App.Views.photos({ collection: <Collection of certain length> });
这可能吗?我不介意添加另一个方法来返回一定长度的集合。
更新
我创建了另一个具有相同模型的集合,并在每次分页时将其用作缓冲区。 如果这是一个好主意,请告诉我?
答案 0 :(得分:1)
您可以为集合实现分页方法,该方法返回集合的子集(“页面”)。
像这样(未经测试):
var PhotoCollection = Backbone.Collection.extend({
model:TestModel,
getPage: function(pageNumber, pageLength) {
pageLength = pageLength || 10;
var first = (pageNumber - 1) * pageLength;
var last = Math.min(pageNumber * pageLength, this.length);
var page = [];
if(first <= this.length) {
for(var i=first;i<last;i++) {
page.push(this.at(i));
}
}
return new PhotoCollection(page);
}
});
因此,您可以从集合中检索任何“页面”:
//first page using default size of 10
photos.getPage(0);
//second page with page size 25
photos.getPage(1, 25);