我在路由模型调用中获取所有记录,但是在其中一个组件中我只想显示记录的子集。我是通过致电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}}
答案 0 :(得分:1)
filteredUsers: Ember.computed(function() {
return this.get('users').filter(...);
})
这将只执行一次。因此,只要users
属性发生更改,filteredUsers
将不会重新计算,因此它不会是最新的。在这种情况下,您需要引入依赖属性,以便在依赖项发生更改时重新计算。
filteredUsers: Ember.computed('users',function() {
return this.get('users').filter(...);
})