我有一个场景,我需要通过多个参数过滤车辆集合 - 用户可能选择组合的一系列无线电,选择框等,即燃料,座椅,颜色。示例组合可以是:
通过一个参数过滤集合非常简单,但需要多个提示。
这是我的车辆系列:
Vehicles = Backbone.Collection.extend({
model: Vehicle,
withFuelType: function(fuel) {
return this.models.filter(function(vehicle) { return vehicle.get('fuel') === fuel; });
},
withSeats: function (seats) {
return this.models.filter(function (vehicle) { return vehicle.get('seats') === seats; });
},
withColor: function(color) {
return this.models.filter(function (vehicle) { return vehicle.get('color') === color; });
}
})
任何指针都非常感激。
答案 0 :(得分:3)
您可以使用where
进行简单的相等搜索:
其中
collection.where(attributes)
返回集合中与传递的属性匹配的所有模型的数组。适用于
filter
的简单案例。
所以你不需要这些功能,你可以这样做:
c.where({ fuel: 'petrol', color: 'black' });
c.where({ seats: 2 });
您应该可以将搜索查询字符串转换为对象,然后将其移至where
以获得所需内容。