我有一个Backbone的设施集合。与集合关联的模型是Facility with FacilityCode作为模型Id属性。
现在我有一个数组中的FacilityCode列表。有没有简单的方法来创建一个集合,其中包含在此数组中具有匹配FacilityCode的所有模型?
我可以使用collection.get(id)函数逐个获取模型。但我正在寻找一个函数,我可以传递一组ID,这将返回一组匹配的模型。
答案 0 :(得分:3)
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]);