Javascript - Как удалить слушателей событий в классе? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь удалить прослушиватели событий внутри моего класса 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 сообщение о переполнении стека, в котором рассматривается их установка в классах, но это было больше, чем просто удаление одной функции. Я пытаюсь понять, как я могу эффективно удалить все это. Спасибо за любые идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...