逐步向控制器添加模型

时间:2013-04-10 20:58:35

标签: ember.js

我有一个标准的发行路线,如:

App.MessagesRoute = Ember.Route.extend({

    model: function() {
        return App.Message.find();
    }

});

这对于我从REST端点获取的现有消息集非常有用。但我也通过websocket获得新消息。如何在RC2路由架构(和非Ember数据存储)中如何将这些新消息直接传入Ember?

1 个答案:

答案 0 :(得分:0)

我使用在How to fire an event to Ember from another framework中讨论的Ember.Instrumentation框架元素解决了这个问题。

这是我的完整代码:

...
// this is fired from my websocket message reception code.

Ember.Instrumentation.instrument('onMessage', message);
...

App.MessagesRoute = Ember.Route.extend({

    setupController: function(controller, model) {
        Ember.Instrumentation.subscribe('onMessage', {
            before: function(name, timestamp, message) {
                controller.send('onMessage', message);
            },
            after: function() {}
        });
    },

    model: function() {
        return App.Message.find();
    }

});


App.MessagesController = Ember.ArrayController.extend({
    onMessage: function(message) {
        this.unshiftObject(message);
    }
});