如何删除事件监听器
How to remove eventlistener
我正在使用 Ionic 构建应用程序,并且我正在使用这样的 EventSources:
ionViewWillEnter() {
this.uniqueDeviceID.get()
.then((uuid: any) => {
this.eventListener = this.events(uuid).addEventListener("message", function(e) {
console.log(e);
}, false);
})
.catch((error: any) => {
console.log(error);
});
}
events(uuid: any) {
return new EventSource("http://url.com");
}
它工作正常,但我想在再次离开视图时停止听众 - 像这样:
ionViewWillLeave() {
this.eventListener.removeEventListener("message", function(e) {
console.log(e);
}, false);
}
但是没用。如何再次删除侦听器?
您应该将创建的 EventSource 和回调存储在变量中。只有在这种情况下,您才能引用它们,这是删除侦听器所必需的,
例如:
ionViewWillEnter() {
this.uniqueDeviceID.get()
.then((uuid: any) => {
var eventListener = function (e) { console.log(e) };
var eventSource = this.events(uuid)
eventSource.addEventListener("message", eventListener, false);
// then you can
eventSource.removeEventListener("message", eventListener, false);
})
.catch((error: any) => {
console.log(error);
});
}
我正在使用 Ionic 构建应用程序,并且我正在使用这样的 EventSources:
ionViewWillEnter() {
this.uniqueDeviceID.get()
.then((uuid: any) => {
this.eventListener = this.events(uuid).addEventListener("message", function(e) {
console.log(e);
}, false);
})
.catch((error: any) => {
console.log(error);
});
}
events(uuid: any) {
return new EventSource("http://url.com");
}
它工作正常,但我想在再次离开视图时停止听众 - 像这样:
ionViewWillLeave() {
this.eventListener.removeEventListener("message", function(e) {
console.log(e);
}, false);
}
但是没用。如何再次删除侦听器?
您应该将创建的 EventSource 和回调存储在变量中。只有在这种情况下,您才能引用它们,这是删除侦听器所必需的, 例如:
ionViewWillEnter() {
this.uniqueDeviceID.get()
.then((uuid: any) => {
var eventListener = function (e) { console.log(e) };
var eventSource = this.events(uuid)
eventSource.addEventListener("message", eventListener, false);
// then you can
eventSource.removeEventListener("message", eventListener, false);
})
.catch((error: any) => {
console.log(error);
});
}