有没有办法用 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 对象。)
但是,消息不断到达,我希望这些消息的显示在它们到达时自动重新查询新消息。
我有一个 websocket 告诉我什么时候发生并且工作正常,我正在使用 Ember.Instrumentation 基础设施将该事件路由到我拥有的 setupController 闭包。但是当我做一个
this.controller.set('content', this.query());
响应此事件重新加载,内容全部消失。我究竟做错了什么?