2017-09-17 1 views
0

Hallo Ich bin ein wenig verwirrt, wie Glut funktioniert, ich habe eine App, die ich erstellen, die Aufgaben für einen bestimmten Benutzer auflisten soll. Hier ist mein Modell:Reload ember model

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    location: DS.attr('string'), 
    date: DS.attr('date'), 
    archive: DS.attr('boolean'), 
    user: DS.attr('string'), 
}); 

Das ist für, wenn ich eine Aufgabe zur Aufgabenliste hinzufügen. Allerdings, wenn ich alle Aufgaben in meiner Aufgabenliste bekommen verwende ich dies in meiner Route:

model: function() {  
     return this.store.findAll('task'); 
    } 

Für meine Filterung aller Benutzer für die Aufgaben, die ich zu meinem Controller fügen Sie diese haben:

filteredModel: Ember.computed('model', function(){ 
     let model = this.get('model'); 

     return model.filter(function(item){ 
      return item.data.user == this.get('session.user.email'); 
     }); 

    }), 

All dies funktioniert gut. Wenn ich jedoch eine neue Aufgabe zur Aufgabenliste hinzufüge, wird meine Aufgabenliste nicht aktualisiert, daher muss ich meine Seite neu laden. Kann das automatisch gemacht werden, ohne meine Seite zu aktualisieren?

Antwort

1

Das von findAll zurückgegebene Array ist ein Live-Array und enthält immer alle Datensätze im Geschäft. Ihr CP hat jedoch einen falschen Abhängigkeitsschlüssel. Der Abhängigkeitsschlüssel sollte entweder .[] oder [email protected]? enthalten, oder er wird bei Array-Änderungen nicht zuhören. Da Sie die user Eigenschaft verwenden, sollte es [email protected] sein. Außerdem sollten Sie den aktuellen Benutzer wahrscheinlich zum Abhängigkeitsschlüssel hinzufügen.

Schließlich kann Ihr CP überhaupt nicht arbeiten, weil die this in der Filterfunktion die this der Filterfunktion ist, nicht der Controller. Sie sollten entweder eine Pfeilfunktion verwenden oder das this auf eine Variable speichern.

Auch item.data.user scheint falsch, wahrscheinlich sollte dies item.get('user') sein.

So ist der letzte CP ist:

filteredModel: Ember.computed('[email protected]', 'session.user.email', function(){ 
    return this.get('model') 
     .filter(item => item.get('user') == this.get('session.user.email')); 
}), 
+0

Hallo Lux Ich habe eine andere Frage in Bezug auf Ember bekommen würden Sie in der Lage sein, es zu überprüfen https://stackoverflow.com/questions/46276924/ember-js- nested-forms – jsg

+0

Vielleicht sollten Sie den ember slack help channel für weitere Diskussionen wie Fragen auschecken. – Lux