Ember.computed完成后状态发生变化

时间:2015-11-03 13:46:04

标签: ember.js

我有一个Ember应用程序,它在表格中显示借来的文章列表。一个表格单元格有一个选择助手,它可以“借用”或“返回”作为值。

我还有一个复选框,通过查询参数触发返回项目的显示。

当我将复选框设置为不显示退回的项目并将一个项目从“借用”设置为“已退回”时,文章将保持可见。

所以我要做的就是重新加载带有状态变化的'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');
    }
  })
});

1 个答案:

答案 0 :(得分:0)

您需要使用state观看每个model上的model.@each.state属性。

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

同样,如果您只想观察是否有任何文章被创建或销毁,您可以观看数组 - 'model.[]'

您想要Ember.computeddoc),因为您将结果作为属性使用。如果每次更改其中一个状态(例如自动保存模型)时,您都会使用Ember.observerdoc)。