【问题标题】:Collection of certain length一定长度的集合
【发布时间】:2012-12-07 20:39:10
【问题描述】:

如果我们可以只将一定长度的集合传递给视图,有没有办法?

我正在尝试实现分页,这就是我不想传递整个集合的原因。

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

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

更新:

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

【问题讨论】:

标签: backbone.js underscore.js


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多