2015-11-03 37 views
1

我有一個Ember應用程序,該應用程序顯示錶中借用文章的列表。一個表格單元格有一個選擇助手,它具有「借用」或「返回」值。Ember.computed完成後的狀態更改

我也有一個複選框,通過查詢參數觸發顯示返回的項目。

當我將複選框設置爲不顯示返回項目並將一個項目從「借用」設置爲「返回」時,該文章將保持可見狀態。

所以我將不得不做的是重新加載'filteredResults'與納入狀態更改。

我讀了關於Ember.observer,但我不知道這是正確的使用。

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    queryParams: ['showReturned'], 
    showReturned: false, 
    possibleStates: ['borrowed', 'returned'], 
    filteredResults: Ember.computed('showReturned', 'model', function() { 
    const articles = this.get('model'); 
    if (this.get('showReturned')) { 
     return articles; 
    } else { 
     return articles.filterBy('state', 'borrowed'); 
    } 
    }) 
}); 

回答

0

您需要[email protected]看每個modelstate屬性。

filteredResults: Ember.computed('showReturned', '[email protected]', function() { 
    const articles = this.get('model'); 
    if (this.get('showReturned')) { 
     return articles; 
    } else { 
     return articles.filterBy('state', 'borrowed'); 
    } 
    }) 

按照同樣的思路,如果你想只是看是否產生或破壞任何物品,你可以看的陣列 - 'model.[]'

您想要Ember.computeddoc),因爲您將結果作爲屬性使用。如果在每次更改某個狀態(例如自動保存模型)時都想執行某個操作,則可以使用Ember.observerdoc)。

+0

這完美的作品!還要感謝關於爲什麼的解釋。 –