3

ember ルートでクエリ パラメータを使用する方法はありますか。私のアプリには、ユーザーが入力フィールドで製品を検索する製品検索ルートがあります。ユーザーが見つかった製品の 1 つに移動して [戻る] ボタンを押すと、ルートの URL がproducts. products?search=shirtsユーザーがこのページに戻ったときに前の結果が表示されるように、ユーザーが実行したクエリをルートに保存する方法はありますか?

4

1 に答える 1

0

あなたが望むものを誤解していない限り、またはビジネス要件のためにそうしなければならない場合を除き、特定の検索カテゴリのルートを作成しません。代わりにobserve、検索 keyworkd によってフィルター処理される計算されたプロパティ (または を含む関数) を作成します。私のコントローラーのプロパティ)。次のようなもの:

App.SomeController = Em.ArrayController.extend({
    searchKeyword: '',
    filteredSearchResults: function() {
        var keyword = this.get('searchKeyword');
        if(keyword.length > 0) {
            // filtered search
            return this.get('content').filter(function(item) {
                // do your own filtering logic here
                return item.get('name').indexOf(keyword) !== -1
            });
        }  else {
            // unfiltered search
            return this.get('content');
        }
    }.property('content', 'searchKeyword');
});

次に、ハンドルバーで、このように繰り返します

{{#each filteredSearchResults}} 
    ... do stuff here...
{{/each}}

検索テキスト フィールドはコントローラーのsearchKeywordプロパティにバインドする必要があるため、ルートからルートに移行するときに検索語が失われることはありません。これに関する問題は、そのプロパティを明示的に削除しない限り、検索用語が消去されないことです (技術的には、そのフィールド/バインドの値を手動で削除する特定のシナリオに対して、いくつかのロジック/チェックを行うことができます)。

于 2013-08-06T21:54:54.083 に答える