1

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

  • 颜色=红色
  • 座位=4 & 燃料=汽油
  • 燃料=柴油
  • 燃料=汽油和颜色=黑色和座椅=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; });
        }
    })

任何指针都非常感谢。

4

1 回答 1

3

您可以where用于简单的相等搜索:

在哪里 collection.where(attributes)

返回集合中与传递的属性匹配的所有模型的数组。对 的简单情况很有用filter

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

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

您应该能够将您的搜索查询字符串转换为一个对象并将其交给where您以获取您需要的内容。

于 2013-02-23T17:26:59.790 回答