javascript - Lägga till händelselyssnare för lit-elementkomponent inuti typescript
Jag har framgångsrikt lagt till en eventlistener för min Lit-elementkomponent i min Typescript-kod:
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) {}
}
Men när jag kör evenemanget får jag följande fel:
Uncaught (in promise) TypeError: this.fetchTickets is not a function at HTMLElement.<anonymous>Tydligen hamnar det i changeCurrentEvent-funktionen men det kan inte hitta fetchTickets-funktionen.
Svar #1
Du kan använda ES6:s pilfunktionssyntax för att slippa skriva this.changeCurrentEvent.bind(this).
changeCurrentEvent = async (event) => {
await this.fetchTickets(event.id);
this.currentEvent = event;
}
