ruby on rails-如何绑定到Emberjs中的全局变量



以下似乎不起作用:

//Global variable needed for Websocket methods
var dispatcher = new WebSocketRails(document.location.host+'/websocket')
//dispatcher.state = 'connected' or 'disconnected'. This automatically updates
//  its value if connected or not. I want to bind this value to a property below.
App.MessagesController = Ember.ArrayController.extend({
  isConnectedBinding: 'dispatcher.state', //also tried dispatcher.state w/o quotes, didn't work
  isConnected: (function() {
    alert('!!!!'); //This alert never pops up
    if (this.isConnectedBinding === 'connected') {
      return true;
    } else {
      return false;
    }
  }).property('isConnectedBinding')
});

我在Ruby on rails服务器上使用Websocket rails gem,在前端使用Emberjs 1.5.1。

我测试了dispatcher.state确实改变了它的值(比如我暂时关闭了本地服务器:"已连接"->"已断开连接")。所以我猜它一定是沿着Emberjs绑定的。我还使用Chrome控制台发现,App.__container__.lookup('controller:messages').isConnected的值始终是undefined,而从来不是truefalse

任何帮助都将不胜感激。

只需从isConnectedBinding: 'dispatcher.state'中删除Binding和单引号,因为dispatcher是一个全局变量。参考这个jsbin,你会有一些想法。

相关内容

  • 没有找到相关文章

最新更新