Показать сообщение отдельно
  #6 (permalink)  
Старый 02.08.2018, 11:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,813

Событие принудительно ставит "контекстом" коллбэка сам элемент вызвавший событие.

Есть множество вариантов борьбы с этим, но ИМХО, только два достойны использования:
Задавать коллбэк через стрелочную функцию:
this.img.onload = event => {
  console.log("Downloaded");
  console.log(this.el.src);
};
т.к. стрелочная функция железно цепляет вышестоящий "контекст".

Вешать обработчиком события не коллбэк, а сам объект, имеющий служебный метод handleEvent:
this.img.addEventListener('load', this);
class Materialbox extends Component {
  //...
  handleEvent(event){
    switch(event.type){
      case 'load':
        this.imageLoad(event);
        break;
      //...
    } 
  },
  imageLoad(event){
    console.log("Downloaded");
    console.log(this.el.src);
  }
  //...
}
что отлично сочетается с ООП.
__________________
29375, 35

Последний раз редактировалось Aetae, 02.08.2018 в 11:28.
Ответить с цитированием