简体   繁体   English

在打字稿中为 lit 元素组件添加事件侦听器

[英]Adding event listener for lit element component inside typescript

I've successfully added an eventlistener for my Lit element component inside my Typescript code:我已经成功地在我的 Typescript 代码中为我的 Lit 元素组件添加了一个事件监听器:

async firstUpdated() {
  await this.updateComplete;

  // Add an event listener to our event-search component so we can switch the current event
  const eventSearch = document.querySelector('event-search');
  if(typeof eventSearch !== 'undefined') {
    eventSearch.addEventListener('select', this.changeCurrentEvent);
  }
}

async changeCurrentEvent(event) {
  await this.fetchTickets(event.id);
  this.currentEvent = event;
}

async fetchTickets(eventId: number) {
  try {
    this.tickets = await fetchData(ticketEndpoint(eventId))
  } catch (error) {}
}

However, when executing the event i get the following error:但是,在执行事件时,我收到以下错误:

Uncaught (in promise) TypeError: this.fetchTickets is not a function at HTMLElement.<anonymous>

Apparently it does land in the changeCurrentEvent function but it cannot find the fetchTickets function.显然它确实落在changeCurrentEvent函数中,但它找不到fetchTickets函数。

You can use ES6 Arrow Function syntax to avoid having to write this.changeCurrentEvent.bind(this) .您可以使用 ES6 箭头函数语法来避免编写this.changeCurrentEvent.bind(this)

changeCurrentEvent = async (event) => {
  await this.fetchTickets(event.id);
  this.currentEvent = event;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM