2013-04-10 45 views
1

我有这样一个标准的问题路线:逐步增加车型控制器

App.MessagesRoute = Ember.Route.extend({ 

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

}); 

这对于现有的一套,我从一个REST端点获取消息的伟大工程。但我也通过websocket获得新消息。如何在RC2路由架构(和非Ember数据存储)中如何将这些新消息直接放入Ember中?

回答

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); 
    } 
});