2013-04-10 44 views
0

我有一个应用程序应用程序,我想在其中添加sse。问题是我收到消息后无法调用控制器功能。我可以通过声明一个像var ac = new App.ActivecallsController; ac.addNewCall().这样的控制器的新实例来调用它。但是它创建了一个新实例,这就是为什么它不会更改控制器中activeCalls数组的值。在Ember.js中添加html5服务器发送的事件

if(typeof(EventSource)!=="undefined"){ 
      self.set('source',new EventSource("http://localhost/sse/demo_sse.php")); 
      var source=new EventSource("http://localhost/sse/demo_sse.php"); 
      source.onmessage=function(event){ 
       var data = $.parseJSON(event.data); 
       console.log(data.length); 
       if(data.length){ 
        **//Here I want to call the addNewCall function.** 
       } 
      } 
     } 

我控制器

App.ActivecallsController = Ember.ArrayProxy.extend({ 
    activeCalls:[], 
    content:[], 
    addNewCall:function(model){ 
     var self= this; 
     console.log('here'); 
     App.Cdrglobal.set('active_call',App.Cdrglobal.active_call+1); 
     self.activeCalls.insertAt(0,model); 
    } 
}); 
+0

与Ember的数据,你可以做类似App.store.load(App.Message,消息),但我看到你在这里没有使用Ember Data。 – outside2344 2013-04-10 20:44:18

+0

为什么要制作两个EventSource实例? – 2014-05-10 00:05:18

回答

-1

我已经找到了解决办法

APP.__container__.lookup('controller:activecalls').addNewCall(model); 
相关问题