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是私有的? –