【发布时间】:2020-05-08 14:30:30
【问题描述】:
我已经在我的 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) {}
}
但是,在执行事件时,我收到以下错误:
Uncaught (in promise) TypeError: this.fetchTickets is not a function at HTMLElement.<anonymous>
显然它确实位于changeCurrentEvent 函数中,但它找不到fetchTickets 函数。
【问题讨论】:
-
当
changeCurrentEvent被执行时,this上下文正在丢失。你可以试试eventSearch.addEventListener('select', this.changeCurrentEvent.bind(this)) -
你不是binding the event listener in your template的原因,例如
<event-search @select=${this.changeCurrentEvent}>?
标签: javascript typescript lit-element