我有一個控制器,它使用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