0
我有一个es6类,绑定在mousedown上的handleElement
,拖动它将调整variableElement
的大小。Mousemove函数没有被调用
问题是它不会输出console.log('move')
。虽然如果我重命名_mousemove
函数,我得到一个未定义的方法错误的两个eventListeners ...
我似乎无法弄清楚发生了什么?
export default class DragResizer {
constructor(handleElement, variableElement) {
this.handleElement = window.document.getElementsByClassName(handleElement)[0];
this.variableElement = window.document.getElementsByClassName(variableElement)[0];
console.log('bind');
this.handleElement.addEventListener('mousedown', function() {
window.addEventListener('mousemove', this._mousemove);
console.log('down');
});
window.addEventListener('mouseup', function() {
console.log('up');
window.removeEventListener('mousemove', this._mousemove);
});
}
_mousemove(event) {
console.log('move');
this.variableElement.style.flexBasis = `${event.clientX}px`;
}
}
尝试使用箭头函数为mousedown侦听器保留上下文(即'this') – Musa
@Musa没有运气。上下文似乎不是这里的问题。似乎没有调用mousemove .. – mark
您是否需要在类中引用'console',因为_mousemove是私有的? –