2016-08-23 15 views
0

私のルートモデル呼び出しですべてのレコードを取得していますが、コンポーネントの1つでは、レコードのサブセットのみを表示したいだけです。私はmodels.filter(somefilter)と呼んでこれをやっています。この問題は、filterArrayではなくDS.RecordArrayを返し、一部のアクションによってモデルがストアから削除されると、Arrayは更新されず、そのモデルのコンポーネントは削除されません。Ember DS.RecordArray filter items

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
filteredUsers: Ember.computed(function() { 
    return this.get('users').filter(...); 
    }) 

usersプロパティは、それが最新ではありませんので、その後filteredUsersが再計算されることはありません変更されたときにこれが唯一のonce.so実行されます。この場合、従属プロパティが導入される必要があります。従属プロパティが変更されるたびに再計算されます。

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