【发布时间】:2015-12-06 01:29:44
【问题描述】:
我遇到了一个问题,我已经以一种讨厌的方式解决了,但我在这里提出它,看看是否有更好的方法。
我正在使用 angular-websocket 通过 Internet 发送数据,我创建了一个名为 Protocol 的简单服务,它使用 $websocket 和消息传递工作流。
这是Protocol 服务的简化版本:
app.service('Protocol', [ '$websocket',
function ($websocket) {
this.variable = 'to be changed in event' ;
this.connect = function() {
this.ws = $websocket('ws://mydomain.org') ;
this.ws.onOpen(function() {
// when i'm here the this pointer is a $websocket, not Protocol
// so i made Protocol a global variable to be able to use it here
Protocol.variable = 'new value' ;
});
}])
如评论中所述,我将协议设为全局以便能够在 onOpen 中使用它。由于回调是由$websocket 调用的,所以onOpen 中的this 指针不是Protocol。
有没有更简洁的方法来更改this.variable 而无需添加任何全局?
【问题讨论】: