1

複数のパラメーター(燃料、座席、色など、ユーザー組み合わせることができる一連のラジオ、選択ボックスなど)で車両コレクションをフィルター処理する必要があるシナリオがあります。組み合わせの例は次のとおりです。

  • color = red
  • 座席=4&燃料=ガソリン
  • 燃料=ディーゼル
  • 燃料=ガソリン&色=黒&座席= 2

コレクションを1つのパラメーターでフィルター処理するのは簡単ですが、複数のパラメーターに関するヒントが必要です。

これが私のVehiclesコレクションです。

  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 に答える