首页 > 解决方案 > 类中的 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 类中的事件?

标签: javascript

解决方案


事件侦听器回调默认绑定到元素。

如果你想让它工作,你应该像这样附加它:

document.addEventListener('profileEvent', this.profileEvent.bind(this));

推荐阅读