Backbonejs - 如何通过多个参数过滤集合?

时间:2013-02-23 16:44:00

标签: backbone.js

我有一个场景,我需要通过多个参数过滤车辆集合 - 用户可能选择组合的一系列无线电,选择框等,即燃料,座椅,颜色。示例组合可以是:

  • 颜色=红色
  • 席位= 4&燃料=汽油
  • 燃料=柴油
  • fuel = petrol& color = black&座位= 2
  • etc

通过一个参数过滤集合非常简单,但需要多个提示。

这是我的车辆系列:

  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; });
        }
    })

任何指针都非常感激。

1 个答案:

答案 0 :(得分:3)

您可以使用where进行简单的相等搜索:

  

其中 collection.where(attributes)

     

返回集合中与传递的属性匹配的所有模型的数组。适用于filter的简单案例。

所以你不需要这些功能,你可以这样做:

c.where({ fuel: 'petrol', color: 'black' });
c.where({ seats: 2 });

您应该可以将搜索查询字符串转换为对象,然后将其移至where以获得所需内容。