从Backbone Collection中提取与Model ID列表匹配的多个模型

时间:2013-08-27 03:27:31

标签: javascript backbone.js collections

我有一个Backbone的设施集合。与集合关联的模型是Facility with FacilityCode作为模型Id属性。

现在我有一个数组中的FacilityCode列表。有没有简单的方法来创建一个集合,其中包含在此数组中具有匹配FacilityCode的所有模型?

我可以使用collection.get(id)函数逐个获取模型。但我正在寻找一个函数,我可以传递一组ID,这将返回一组匹配的模型。

1 个答案:

答案 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]);