以下似乎不起作用:
//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
,而从来不是true
或false
任何帮助都将不胜感激。
只需从isConnectedBinding: 'dispatcher.state'
中删除Binding和单引号,因为dispatcher是一个全局变量。参考这个jsbin,你会有一些想法。