Gibt es eine Möglichkeit, Echtzeitdaten mit Ember.js zu erstellen?Anfordern von Modelldaten in der Route Ember.js
Was ich suche ist die Fähigkeit, aktualisierte und neue Datensätze (nicht löschen) in zuvor zurückgegebene Ergebnisse zu injizieren.
Also lassen Sie uns sagen, dass ich Router haben, der so aussieht, dass und Paging ermöglicht das Sortieren (aka überspringen):
App.Router.map(function() {
this.resource('messages', { path: '/messages/skip/:skip/sort/:sort/direction/:direction' });
});
App.MessagesRoute = Ember.Route.extend({
model: function(params) {
this.set('params', params);
return this.query();
},
query: function() {
var sort = {};
sort[this.get('params').sort] = parseInt(this.get('params').direction);
return App.Message.find({}, {
skip: this.get('params').skip,
sort: sort
});
},
setupController: function(controller, model) {
var self = this;
this._super(controller, model);
Ember.Instrumentation.subscribe('onMessage', {
before: function(name, timestamp, message) {
self.controller.set('content', self.query());
},
after: function() {}
});
},
});
Dies funktioniert gut - es sortiert und überspringt richtig in einem statischen Sinn.
. (Anmerkung: Ich bin Ember Daten nicht verwenden - nur eine Reihe von Ember Objects)
jedoch Nachrichten eintreffen kontinuierlich und ich würde die Anzeige dieser Meldungen wie requery automatisch die neue Nachricht, wenn sie ankommen.
Ich habe eine WebSocket, die mir sagt, wenn das passiert und das funktioniert ordnungsgemäß und ich benutze die Ember.Instrumentation-Infrastruktur, um dieses Ereignis an die SetupController Schließung ich habe. Aber wenn ich als Reaktion auf dieses Ereignis eine Neuladung durchführe, verschwindet der Inhalt vollständig. Was mache ich falsch?
Die Modellmethode auf Ember.Route kann eine Verheißung zurückgeben, aber wenn dies der Fall ist, wartet der Router auf das Versprechen, vor dem Aufruf von setupController() aufzulösen oder fehlzuschlagen. Controller selbst erwarten immer ein konkretes Modell, kein Versprechen. – nicknystrom