2016-08-23 3 views
0

Ich bekomme alle Datensätze in meinem Routenmodellaufruf, aber dann in einer der Komponenten möchte ich nur eine Teilmenge der Datensätze anzeigen. Ich mache das, indem ich models.filter(somefilter) nenne. Das Problem dabei ist, dass filter eine Array keine DS.RecordArray zurückgibt und wenn eine Aktion verursacht, ein Modell aus dem Speicher zu entfernen, wird die Array nicht aktualisiert und die Komponente mit dem Modell wird nicht entfernt.Ember DS.RecordArray Filterelemente

Kann jemand entweder einen Filter erstellen, der DS.RecordArray zurückgibt, oder ein vorhandenes Array in einen DS.RecordArray konvertieren.

 
// 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}} 

Antwort

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

Diese nur once.so ausgeführt wird, wenn users Eigenschaft geändert, dann wird filteredUsers nicht neu berechnet werden, damit es nicht auf dem neuesten Stand sein. In diesem Fall müssen Sie die abhängige Eigenschaft einführen, so dass sie immer dann neu berechnet wird, wenn sich die Abhängigkeit geändert hat.

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