Показать сообщение отдельно
  #6 (permalink)  
Старый 15.01.2021, 16:57
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Попробуйте рассмотреть такой вариант.
Если к каждой ячейке cell добавить еще поле clickHandler, сильно хуже ей не станет
private setEvent(): void {
  const cellClick = (cell: Cell) => {
    if (this.occupiedCells.has(cell)) {
      console.log('DESTROY');
    } else {
      console.log('empty');
    }
  };
 
  this.engine.on(this.shovelNode, 'click', (e) => {
    this.toggleState();
    this.engine.events.click.eventBubbling = !!this.isActive;
    if (this.isActive) {
      this.cells.forEach((cellRow) => cellRow.forEach((cell) => {
	    cell.clickHandler = () => cellClick(cell)
        this.engine.on(cell.node, 'click', cell.clickHandler);
      }));
    } else {
       this.cells.forEach((cellRow) => cellRow.forEach((cell) => {
          this.engine.off(cell.node, 'click', cell.clickHandler);
        }));
    }
  });
}


Я, конечно не совсем представляю, что такое на самом деле
this.engine.on(cell.node, 'click', () => cellClick(cell));
Но если это просто
cell.node.addEventListener(‘click’, () => cellClick(cell))

то можно просто
cell.node.onclick = () => cellClick(cell)
и
cell.node.onclick = null

Последний раз редактировалось voraa, 15.01.2021 в 17:08.
Ответить с цитированием