Задать вопрос

Как правильно вызвать метод класса с обработчика события в es6?

Я пробую вызвать метод openPopup() в обработчике клика в другом методе. Обязательно ли создавать переменную self? Область видимости this меняется в обработчике. Какое лучшее решение будет?
class DropdownButtonGroup {

            constructor(obj) {
                // code ...
            }

            setListeners() {

                let self = this; // (1)
                params.toggleButton.click(function(){
                    if(params.wrapper.hasClass('collapsed')) {
                        self.openPopup();  //(2)
                    } else {
                        self.openPopup();
                    }

                });
              }
     
              openPopup() {// code ...}


P.S. Недоделанное какое то ООП в js на мой взгляд.
  • Вопрос задан
  • 732 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
AMar4enko
@AMar4enko
Нормальное ООП - никто не говорил, что оно избавит вас от необходимости понимания контекста вызова.
params.toggleButton.click(() => {
  if(params.wrapper.hasClass('collapsed')) {
    this.openPopup();  //(2)
  } else {
    this.openPopup();
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы