Ember DS.RecordArray过滤项目

时间:2016-08-23 21:19:21

标签: ember.js ember-data

我在路由模型调用中获取所有记录,但是在其中一个组件中我只想显示记录的子集。我是通过致电models.filter(somefilter)来做到这一点的。这个问题是filter返回Array而不是DS.RecordArray,当某个操作导致模型从商店中删除时,Array不会更新,不删除具有该模型的组件。

是否有人知道如何创建返回DS.RecordArray的过滤器或将现有数组转换为DS.RecordArray

// routes/index.js
Route.extend({
  model() {
    return this.store.findAll('user');
  }
});

//index.hbs
{{some-component users=model}}

//some-component.js
Component.extend({
  filteredUsers: Ember.computed(function() {
    return this.get('users').filter(...);
  })
});

//some-component.hbs
{{#each filteredUsers as |user|
  {{other-component user=user}}
{{/each}}

1 个答案:

答案 0 :(得分:1)

filteredUsers: Ember.computed(function() {
    return this.get('users').filter(...);
  })

这将只执行一次。因此,只要users属性发生更改,filteredUsers将不会重新计算,因此它不会是最新的。在这种情况下,您需要引入依赖属性,以便在依赖项发生更改时重新计算。

filteredUsers: Ember.computed('users',function() {
        return this.get('users').filter(...);
      })