1

サーバーから返された結果をフィルタリングするために、ドロップダウンとチェックボックスを持つフォームを備えた UI があります。

現在の設定を利用できるようにするためにモデルを作成する必要があるのか​​ 、それともjqueryで値を取得してコレクションフェッチに渡すだけなのか疑問に思います。

何が良いでしょうか?

4

3 に答える 3

2

それは、デザインにどれだけ投資したいかによって異なります。または、より実用的なアプローチで生活することもできます。

設計ソリューションを実行する場合Collection、ここで扱っている結果はないと言えます。これはモデルであり、フィルター パラメータをサーバーにFilterSearch送信するたびに、 のインスタンスを作成しています。まあ言ってみれば:FilterSearch

POST http://myapp.com/filter_searchs?field1=value1&field2=value2

サーバーはこのリクエストを受け取り、結果の配列を返します。まあ言ってみれば:

{
  "field1": "value1",
  "field2": "value2",
  "results": [ "result1", "result2" ]
}

バックボーンFilterSearchモデルは、サーバーから応答された情報で更新されます。

var myFilterSearch = App.FilterSearch.new({ field1: "value1", field2: "value2" });
myFilterSearch.save({ wait:true });

そこから結果を作成できますCollection

var myResults = App.Results.new( myFilterSearch.get( "results" ) );

(すべてのコードは簡略化されており、テストされていません)

于 2012-04-12T12:20:38.047 に答える
0

もう 1 つの解決策は、フィルター フィールドをitselfに格納するCollectionことです。

App.Results = Backbone.Collection.extend({
  url: function() {
    return "/results?field1=" + this.field1 + "&field2=" + this.field2 );
  }
});

var myResults = App.Results.new({ field1: "value1", field2: "value2" });
myResults.fetch();

コレクション内のフィルタ フィールドを変更して を呼び出すだけで結果を更新できるため、このアプローチは興味深いものです.fetch()。コレクションへのすべての参照はそのまま残ります。

(すべてのコードは簡略化されており、テストされていません)

于 2012-04-12T12:29:10.850 に答える