【问题标题】:Backbone.js Collection filter top 10 modelsBackbone.js Collection 过滤前 10 个模型
【发布时间】:2012-08-09 19:46:13
【问题描述】:

我的 Collection 获取了几条记录,我只需要显示其中的前 10 条记录。我试过了

   this.collection.each(function(){
        if (count == 10) break;
        //pass model to view
   });

不幸的是 break 不适用于 underscore.js 的 each() API 参考这里:how to break the _.each function in underscore.js

如何编写过滤器以仅从集合中提取前 10 名

     this.collection.filter();

更新:collection.first(10) 为我获取过滤列表。但是,我仍然需要将 .each() 链接到此集合以处理集合项。 collection.first() 不允许链。请参考我选择的答案来解决这个问题。

【问题讨论】:

标签: javascript backbone.js backbone.js-collections


【解决方案1】:

例如

this.collection.first(10)

然后,如果您需要使用每个模型,例如:

    var collection = new Backbone.Collection([{id:1}, {id:2}, {id:3}, {id:4}, {id:5}],{model: Backbone.Model});

    var newCollection = new Backbone.Collection(collection.first(2));

    newCollection.each(function(model){
      alert(JSON.stringify(model.toJSON()));
    });

请参阅jsfiddle。 ​​​ 请注意,正如topic 中所述,还有另一种方法可以使用Underscore chain method

看看Backbone docUnderscore doc

【讨论】:

  • underscore.js 中的 first() 是数组函数,这是一个集合。我尝试使用它,浏览器就在那一行显示:对象不支持此属性或方法...感谢您的回答!
  • 无论如何,它应该适用于集合。 stackoverlow 上还有另一个主题:stackoverflow.com/questions/8240382/…。许多下划线方法也适用于 Backbone Collection,只需删除第一个参数(数组)并从 Backbone Collection 对象中调用该方法。
  • 我第二个xiris,看看这个小提琴(看控制台)jsfiddle.net/RgBVw
  • @JensAlm 我正在尝试做:collection.first(2).each(function(model){ alert(model.toJSON()); });但它向我抛出了那个错误:jsfiddle.net/RgBVw/3
  • @xiris 谢谢...我从您的链接中看到它不允许链接..这就是我收到该错误的原因
猜你喜欢
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2012-05-15
  • 2016-10-01
  • 2014-03-12
相关资源
最近更新 更多