javascript - 类中的 Javascript 事件侦听器
问题描述
class ProfileCollaboration {
constructor() {
document.addEventListener('profileEvent', this.profileEvent)
}
profileEvent(event) {
let profileEvent = event.detail
if (profileEvent.name !== 'profileEditing') {
return
}
if (profileEvent.editing === true) {
console.log(this)
this.enableEditingMode()
} else {
this.disableEditingMode()
}
}
enableEditingMod() {
console.log('enabled');
}
disableEditingMode() {
console.log('disabled');
}
}
控制台日志说:this.enableEditingMode 不是函数
这是正确的,因为这是 addEventListener 的上下文。
如何监听 js 类中的事件?
解决方案
事件侦听器回调默认绑定到元素。
如果你想让它工作,你应该像这样附加它:
document.addEventListener('profileEvent', this.profileEvent.bind(this));
推荐阅读
- c# - 使用 mcs 编译器在 linux 中编译 c# 时出现错误:名称空间“System.Windows”中不存在类型或名称空间名称“Forms”?
- python - 找到触发词时,Discord bot 删除所有消息
- python - Django 模型“图像”对象没有属性“_committed”
- javascript - 如何在表单顶部显示加载指示器?
- arrays - 如何初始化指向结构数组的指针
- c# - Process.Start 失败并拒绝访问
- r - 如何在 R 中使用 plot() 绘制一个步长为 0.5 的函数?
- javascript - 合并两个不同的数组
- javascript - 如何将文本框中的文本保留在附加框中?
- c# - 如何在 C# 和 WPF 中的实体框架中创建数据库和表?