收集一定的长度

时间:2012-12-07 12:00:07

标签: backbone.js underscore.js

如果我们可以将一定长度的集合传递给视图吗?

我正在尝试实现分页,这就是为什么我不想传递整个集合。

 var <new View> = new App.Views.photos({ collection: <Collection of certain length> });

这可能吗?我不介意添加另一个方法来返回一定长度的集合。

更新

我创建了另一个具有相同模型的集合,并在每次分页时将其用作缓冲区。 如果这是一个好主意,请告诉我?

1 个答案:

答案 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);