2015-11-03 92 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

这完美的作品!还要感谢关于为什么的解释。 –