2013-11-25 6 views
7

Könnte jemand einen Hinweis auf das Innenleben von Ember/glut-Daten geben:Ember Strecke Modell AdapterPopulatedRecordArray vs RecordArray

Bei der Routenmodellfunktion, wenn ich Kommentare mit contract.id Abfrage Werte ein AdapterPopulatedRecordArray Objekt wird mit der zurück Objekte.

Weg zurück AdapterPopulatedRecordArray:

model: function() { 
    return this.store.find('comment', { contract: 1 }); 
}, 

Aber wenn ich Abfrage nicht die Kommentare ein RecordArray Objekt wird mit den Objekten zurückgegeben.

Weg zurück RecordArray:

model: function() { 
    return this.store.find('comment'); 
}, 

Der entscheidende Unterschied, dass die Änderungen RecordArray Typ Live-Updates auf die Vorlage und die AdapterPopulatedRecordArray nicht und ist unveränderlich. Mein Ziel wäre es, die Objekte von der ersten Abfrage live zu aktualisieren und änderbar zu machen.

Ich benutze mit Ember 1.2/1.1.2 und neuesten-canary/beta3 Ember Daten mit Django Rest Framework Ember-Daten Adapter. Vielen Dank im Voraus für jede Beratung!

+0

Ja, Sie haben Recht. Aber Sie könnten die Antwort immer in AdapterPopulatedRecordArray ändern. Anstatt dieses Array sofort im Modell zurückzugeben, verarbeiten Sie es in der von Ihnen gewünschten Form und kehren Sie dann zurück. – Sangram

Antwort

0

Blick auf, wie Store#find works, this.store.find('comment', { contract: 1 }) Store # findQuery aufrufen.

Die docs for #findQuery sagt

Diese Methode ein Versprechen gibt, die mit einem RecordArray einmal gibt der Server behoben ist.

// #_findQuery 
return resolve(promise).then(function(payload) { 
    payload = serializer.extract(store, type, payload, null, 'findAll'); 
    // ... 
    recordArray.load(payload); 
    return recordArray; 

Sobald DS.AdapterPopulatedRecordArray#load genannt wird, der Inhalt Eigenschaft festgelegt ist und sollte wie ein RecordArray

handeln
this.setProperties({ 
    content: Ember.A(records), 
    isLoaded: true, 
    meta: meta 
}); 

Werden Sie nicht eine Antwort des Servers noch bekommen, wenn Sie bei this.store.find('comment', { contract: 1 }) suchen sind?

+0

Von dem, was ich erhalte, erhält er eine Antwort, aber es ist nicht live zu aktualisieren weitere Datensätze. – Craicerjack

Verwandte Themen