我正在尝试设置一个“全局保存”按钮,该按钮将使用事件侦听器在任何具有保存按钮的类中调用一个事件。
如果我在事件中添加了事件侦听器并引用了该特定类中的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());
}
答案 0 :(得分:1)
将其存储在变量中,然后用于附加和删除
const handler = e => this.test();
document.addEventListener('save-all', handler, false);
document.removeEventListener('save-all', handler, false);