【问题标题】:Extracting several models from a Backbone Collection that matches List of Model IDs从与模型 ID 列表匹配的主干集合中提取多个模型
【发布时间】:2013-08-27 03:27:31
【问题描述】:
我有一个 Backbone 的设施集合。与该集合关联的模型是一个以 FacilityCode 作为模型 Id 属性的 Facility。
现在我有一个数组中的 FacilityCode 列表。有没有什么简单的方法可以创建一个包含所有在这个数组中匹配 FacilityCode 的模型的集合?
我可以使用 collection.get(id) 函数来一一获取模型。但我正在寻找一个函数,我可以将一个 ID 数组传递给该函数,该数组将返回匹配模型的集合。
【问题讨论】:
标签:
javascript
backbone.js
collections
【解决方案1】:
filter 对这类事情很有用。如果您愿意,可以将它很好地包装在您的集合对象的定义中:
Facilities = Backbone.Collection.extend({
// ...
getAllForCodes: function(facilityCodes) {
var models = this.filter(function(facility) {
return (_.indexOf(facilityCodes, facility.get('FacilityCode')) !== -1);
});
return new Facilities(models);
}
});
...并使用它来获取设施代码数组的所有设施:
var myFacilities = facilities.getAllForCodes([1, 2, 3]);