Czy istnieje sposób na wykonywanie danych w czasie rzeczywistym za pomocą Ember.js?Wymaganie danych modelu w trasie Ember.js
To, czego szukam, to możliwość wprowadzania zaktualizowanych i nowych rekordów (bez usuwania) do wcześniej zwróconych wyników.
Więc powiedzmy, że mam routery że wygląda tak, że umożliwia sortowanie i stronicowania (aka pominąć):
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() {}
});
},
});
Działa to doskonale - sortuje i pomija poprawnie w sensie statycznym.
. (Uwaga: nie używam Ember danych - tylko zestaw Ember obiektów)
Jednak nadejściu wiadomości w sposób ciągły i chciałbym wyświetlanie tych komunikatów automatycznie ponowić kwerendę nową wiadomość, kiedy przybyć.
Mam websocket, który mówi mi, kiedy to się dzieje i działa poprawnie i używam infrastruktury Ember.Instrumentation, aby skierować to zdarzenie do zamknięcia setupController, które mam. Ale kiedy wykonuję się w reakcji na to zdarzenie, aby załadować ponownie, zawartość wszystkie znika. Co ja robię źle?
Metoda modelu na Ember.Route może zwrócić obietnicę, ale jeśli tak, router czeka na rozstrzygnięcie lub niepowodzenie obietnicy przed wywołaniem setupController(). Sami kontrolerowie zawsze oczekują konkretnego modelu, a nie obietnicy. – nicknystrom