7

如何在主干.js中链接收集方法?

var Collection = this.collection;
Collection = Collection.where({county: selected});
Collection = Collection.groupBy(function(city) {
  return city.get('city')
});
Collection.each(function(city) {
  // each items
});

我尝试过这样的事情,但它是错误的:

Object[object Object],[object Object],[object Object] has no method 'groupBy' 
4

1 回答 1

15

您不能以这种方式访问Backbone.Collection​​方法(希望我没有错),但您可能知道大多数 Backbone 方法都是基于 Underscore.js 的方法,这意味着如果您查看where方法的源代码,您会发现它使用了 Underscore。 jsfilter方法,所以这意味着你可以实现你想要的:

var filteredResults = this.collection.chain()
    .filter(function(model) { return model.get('county') == yourCounty; })
    .groupBy(function(model) { return model.get('city') })
    .each(function(model) { console.log(model); })
    .value();

.value()在这里对您没有任何用处,您正在.each为每个模型的方法内部制作“东西”,但是如果您想说返回一组过滤后的城市,您可以使用.map并且 infilteredResults将是您的结果

var filteredResults = this.collection.chain()
    .filter(function(model) { return model.get('county') == yourCounty; })
    .map(function(model) { return model.get('city'); })
    .value();
console.log(filteredResults);
于 2012-08-02T13:51:14.467 回答