Ember.js でリアルタイム データを処理する方法はありますか?
私が探しているのは、以前に返された結果に更新されたレコードと新しいレコード (削除ではない) を挿入する機能です。
では、並べ替えとページング (別名スキップ) を有効にする、次のようなルーターがあるとします。
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() {}
});
},
});
これはうまく機能します-静的な意味で正しくソートおよびスキップします。
(注: 私は Ember データを使用していません - Ember オブジェクトのセットです。)
ただし、メッセージは継続的に到着するため、これらのメッセージの表示で、到着時に新しいメッセージを自動的に再クエリしたいと考えています。
それがいつ起こるかを教えてくれるウェブソケットがあり、それは正しく機能しており、Ember.Instrumentation インフラストラクチャを使用して、そのイベントを setupController クロージャーにルーティングしています。しかし、私がするとき
this.controller.set('content', this.query());
このリロード イベントに反応して、コンテンツはすべて消えます。私は何を間違っていますか?