addEventListener () не выполняется - PullRequest
0 голосов
/ 11 декабря 2018

-------------------------------------------- Обновление: 10 минутпотом ----------------------------------------------------

После прочтения комментариев, я думаю, что необходимо дать более подробную информацию о том, где вызывается этот проблемный метод.

//fetch fake user info from RandomAPI
fetch('https://randomuser.me/api/?results=12&nat=us') //pull 12 results
    //parse json
    .then(response => response.json()) 
    //process employee data and return a new employee list
    .then(data => extractEmployeeData(data.results)) 
    //for every employee in the list, generate dom element and bind it to employee object
    .then(employees => employees.map((employee, index) => employee.generateEmployeeCard(main, index)))
    .catch(error => console.log(error));

С учетом сказанного ... Я нена самом деле не знаю, имеет ли ошибка какое-либо отношение к этому асинхронному вызову ... может быть, вы, опытные люди, найдете какую-либо подсказку ...

--------------------------------------------------- Оригинальный пост --------------------------------------------------------------

У меня есть класс:

class Employee {
  this.card;
  this.info = { some employee info... }

  ......

  // generates employee card and binds handler to the dom object generated
  generateEmployeeCard(containerDiv, index) {
      const html = ` some markup... `
      containerDiv.innerHTML += html;
      this.card = document.getElementById(`employee${index}`);

      //THE PROBLEM LINE
      this.card.addEventListener('click', event => this.generateEmployeeModal());
  }

  .......
}

Все работает, как ожидалось, до последней строки в методе generateEmployeeCard().Предполагается, что эта строка добавляет прослушиватель событий к this.card, который является объектом элемента dom.Но вместо этого эта строка выбирает ничего не делать, когда она выполняется.Я посмотрел на вкладку «Прослушиватели событий» ПРЯМО ПОСЛЕ выполнения этой строки, там ничего нет.Это выглядит очень странно, и я не смог найти подобную проблему здесь.Пожалуйста, помогите и спасибо!

1 Ответ

0 голосов
/ 11 декабря 2018

Вы должны назначить обработчик событий непосредственно для функции:

this.card.addEventListener("click", this.generateEmployeeModal);
...