2017-02-21 3 views
0

so habe ich Quotenmodell wie folgt aus:wie Modell filtern Daten in Echtzeit in emberfire zu bekommen

export default DS.model.extend({ 
quota : DS.attr('number'), 
sellerId: DS.attr('string'), 
buyerId:DS.attr('string') }); 

und ich habe assignQuota Strecken mit dynamischen Segment wie folgt aus:

this.route('assignQuota', {path:'/assignQuota/:buyer_id'} 

und in assignQuota Js:

export default Ember.Route.extend({ 
    model(params) { 
    const sellerId = this.get("session").get("uid"); 
    return this.store.query('quota',{ 
    orderBy:'buyerId', 
    equalTo: params.buyer_id 
    }).then(function(quota){ 
     return quota.filterBy('sellerId',sellerId)  
    }); 
    } 
    }); 

und in meiner Vorlage (vereinfacht) ist wie folgt:

 {{#each model as |quota|}} 
      {{quota.quota}} 

      {{/each}} 

Es funktionierte, aber wenn jemand Daten im Quota-Modell hinzufügt oder löscht, wurde die Liste nicht automatisch in der Vorlage aktualisiert.

Die Vorlage wird nur aktualisiert, nachdem ich den Browser aktualisiert habe. Das Witzige ist, wenn ich den Inspektor für die Überprüfung der Daten auf Quoten verwende, zeigt sich, dass sich das Modell bereits ändert, wenn jemand das Modell ändert, aber die Vorlage die Änderungen nicht wiedergibt.

bitte helfen

dank

Antwort

0

Der Grund dafür ist, dass das Modell nicht ändert nicht einhält.

Erstellen Sie eine berechnete Eigenschaft und sorgen Sie dafür, dass der Beobachter Änderungen am Modell ändert, und erstellen Sie dann mithilfe des berechneten Werts eine Liste (Ihre each Schleife).

quotaList: Ember.computed('model.[]', function() { 
    // Your update logic here 
    // return the new value 
}) 
+0

versucht, dass, aber nicht funktioniert – marendra

+0

Thay es wieder Platz @locks nur helfen, mich so gelöst zu lösen. –

+1

Es wird immer noch nicht aktualisiert, 'store.query' gibt kein Live-Array zurück, wie von @kumkanillam erwähnt. – locks

2

Das Problem liegt, wie Sie transitionTo zu assignQuota Route tun, wenn Sie model dem dynamischen Segment sind vorbei, dann wird es die model Haken Aufruf überspringen und es wird dieselbe model Daten machen.

+0

Dies ist, was ich verwende für: this.transitionToRoute ("seller.assignQuota", params.user_id); – marendra

+1

@ user3720044 'store.query' ist kein Live-Array, was bedeutet, dass es nicht automatisch aktualisiert wird, wenn eine Änderung im Store stattfindet. Wenn Sie die 'transitionToRoute' Methode durchlaufen, stellen Sie sicher, dass' model' hook aufgerufen wird. Wenn es angerufen wird, dann werden Sie auf jeden Fall neue Daten erhalten. – kumkanillam

+0

'Es zeigte sich, dass sich das Modell bereits ändert, wenn jemand das Modell ändert, aber die Vorlage die Änderungen nicht widerspiegelt -> so wird es automatisch in der Vorlage aktualisiert, wenn Sie' findAll' oder 'peekAll' verwenden, da beide das Live-Array zurückgeben – kumkanillam