我有一个控制器,它使用SocketService使用的$ q.notify(..)。
SocketService.receive().then(null, null, function (data) {
console.log('Received data from service');
});
我预计这个回调将被删除,当控制器被销毁。但行为是不同的。例如,如果我在使用此控制器的视图中,并且在下一个SocketService $ q.notify上将路由更改为不同(控制器已销毁),然后返回(第二个启动控制器),则此回调将被触发2次。
[Controller-1] init
[SocketService] Received event
[Controller-1] Received data from service
[Controller-1] $on $destroy
[Controller-2] init
[Controller-2] $on $destroy
[Controller-1] init
[SocketService] Received event
2x[Controller-1] Received data from service
SocketService
var listener = $q.defer();
receive: function() {
return listener.promise;
},
socket.stomp.subscribe(TOPIC, function (data) {
console.log('[SocketService] Received event ');
listener.notify(JSON.parse(data.body));
});
如何删除侦听器回调与控制器破坏?
这不是一个DOM事件监听器。 – kxyz
@kxyz我的坏..尝试更新的答案。谢谢:) –
谢谢你的回答,但如果我在2个不同的地方使用相同的监听器,它将不再工作。我必须始终保持套接字的规定。 – kxyz