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