2015-12-25 38 views
0

考慮下面的代碼在你的js文件:EmberJS 2.x中,通過訴諸行動或過濾從存儲記錄

App.ApplicationRoute = Ember.Route.extend({ 
    model: function(){ 
     return this.store.findAll('team'); 
    } 
}); 

在HTML文件中,你可能有這樣的事情:

{{#each model as |team|}} 
<ul> 
    <li>{{team.name}}</li> 
    <li>{{team.email}}</li> 
    <li>{{team.state}}</li> 
    <li>{{team.position}}</li> 
</ul><br>___<br> 
{{/each}} 

而結果會是這樣的

問題是,你怎麼會去排序,或者它顯示的篩選後,這個數據?例如,如果我想按姓名或電子郵件的字母順序排序,或者可以說我只想在紐約州顯示某個人,而不是CA ...,或者可以在我搜索時輸入,所以如果輸入「inc」。 com'......任何有記錄的人都會顯示?

我的猜測是這種情況發生在控制器通過一個Action?我只是不明白如何獲取商店數據(沒有網絡請求),並對已經存在的數據進行過濾或過濾。我知道你可以使用'偷看',但我不確定如何顯示數據。

回答

3

你必須像這樣

sortedList: Ember.computed.sort('model', 'sortProperties'), 
sortProperties: ['name:desc'], // properties to use for sorting 

然後在你的模板,你可以用它

{{#each sortedList as |team|}} 

創建控制器新的計算屬性,以便然後通過修改sortProperties對模型數據進行排序例如[state:asc]你可以更改排序順序,這可以在行動處理程序

+0

優秀的,謝謝你指着我在正確的方向! – Matt

+0

一個簡單的問題....我如何使它動態,所以我可以採取行動?我不知道如何在動作中傳入sortedList或sortProperties,除非它只是嵌套在動作內部? – Matt

+0

閱讀餘燼指南:) https://guides.emberjs.com/v1.10.0/templates/actions/ – Bek