2013-08-05 88 views
3

有沒有一種方法可以在燼路徑中有查詢參數。在我的應用程序中,有一個產品搜索路線,其中用戶使用輸入字段搜索產品。當用戶導航到其中一個找到的產品,然後點擊後退按鈕時,以前的搜索已消失,因此路由的URL爲products。那麼有沒有辦法將用戶所做的查詢存儲到路由中,如products?search=shirts,以便用戶返回此頁面時將顯示以前的結果?灰燼中的查詢參數

+0

有此一[問題](https://github.com/emberjs/ember.js/issues/1773)。但我認爲你可以做到這一點沒有查詢字符串。你現在怎麼做?你能分享一些代碼嗎? – MilkyWayJoe

+0

我沒有。當用戶重新加載頁面時,最後的查詢消失了。也許我可以改變路線到'products/search/shirt'或類似的東西。 –

回答

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屬性,因此搜索術語不迷路當你從路線轉換到路線。這樣做的問題在於,除非您明確地去清理該屬性(您可以在技術上對特定場景進行一些邏輯/檢查,以便手動刪除該字段/綁定的值),否則搜索項將不會被擦除;

+0

但這個解決方案的問題是,你不能鏈接到搜索結果。所有查詢都需要存儲到URL中。 –