如何在保持对“ this”的访问权限的同时删除事件侦听器?

时间:2019-06-14 08:21:48

标签: typescript

我正在尝试设置一个“全局保存”按钮,该按钮将使用事件侦听器在任何具有保存按钮的类中调用一个事件。

如果我在事件中添加了事件侦听器并引用了该特定类中的save方法,那么我将无法再访问该类实例,因此无法保存数据。

如果我使用箭头功能向事件添加事件侦听器,则可以访问该实例,但是如果以后需要,则无法关闭该事件。

如何传递引用时访问实例,或者使用箭头功能删除监听器?

在尝试以'this'作为参数传递对方法的引用时,我尝试使用.bind,但不仅无法以这种方式访问​​实例,而且也无法删除监听器。

使用引用时的代码段(无法访问“ this”):

document.addEventListener('save-all', this.test, false);

document.removeEventListener('save-all', this.test, false);

使用箭头功能时的代码片段(无法删除侦听器):

document.addEventListener('save-all', e => this.test(), false);

document.removeEventListener('save-all', this.test, false);
document.removeEventListener('save-all', e => this.test(), false);

函数本身(名称在该类中是可观察的):

public test(): void
{
    console.log(this.name());
}

1 个答案:

答案 0 :(得分:1)

将其存储在变量中,然后用于附加和删除

const handler = e => this.test();

document.addEventListener('save-all', handler, false);

document.removeEventListener('save-all', handler, false);