Я пытаюсь удалить прослушиватели событий внутри моего класса LocalActor следующим образом:
class LocalActor {
..
this._whiteboards = document.getElementsByClassName("whiteboards")[0];
this.setupListeners();
}
Позже в setupListeners у меня есть это:
setupListeners() {
this._whiteboards.addEventListener('mousedown', e => this.mouseDown(e), false);
this._whiteboards.addEventListener('mouseup', e => this.mouseUp(e), false);
this._whiteboards.addEventListener('mouseout', e => this.mouseUp(e), false);
this._whiteboards.addEventListener('mousemove', e => this.mouseMove(e), false);
//Touch support for mobile devices
this._whiteboards.addEventListener('touchstart', e => this.mouseDown(e), false);
this._whiteboards.addEventListener('touchend', e => this.mouseUp(e), false);
this._whiteboards.addEventListener('touchcancel', e => this.mouseUp(e), false);
this._whiteboards.addEventListener('touchmove', e => this.mouseMove(e), false);
}
Проблема, с которой я столкнулся, заключается в том, что позже я хочу удалить прослушиватели событий, но они на самом деле не удаляются ...
removeDraw()//remove all listeners for draw. Ensure to add events when ready again
{
this._whiteboards.removeEventListener('touchstart', e => this.mouseDown(e), false);
this._whiteboards.removeEventListener('touchend', e => this.mouseUp(e), false);
this._whiteboards.removeEventListener('touchcancel', e => this.mouseUp(e), false);
this._whiteboards.removeEventListener('touchmove', e => this.mouseMove(e), false);
this._whiteboards.removeEventListener('mousedown', e => this.mouseDown(e), false);
this._whiteboards.removeEventListener('mouseup', e => this.mouseUp(e), false);
this._whiteboards.removeEventListener('mouseout', e => this.mouseUp(e), false);
this._whiteboards.removeEventListener('mousemove', e => this.mouseMove(e), false);
}
Я читал, что когда я создаю прослушиватель событий, это не так на самом деле связаны с функцией. Я просто не уверен, хочу ли я создать функцию для каждого слушателя, а потом ссылаться на каждую функцию. Я прочитал и обнаружил 1 сообщение о переполнении стека, в котором рассматривается их установка в классах, но это было больше, чем просто удаление одной функции. Я пытаюсь понять, как я могу эффективно удалить все это. Спасибо за любые идеи.