1

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

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

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

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

更新:

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

4

1 回答 1

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);
于 2012-12-07T12:39:10.423 回答