مدیر رویداد کلیک در تایپاسکریپت


در جاوااسکریپت کد زیر همانطور که انتظار میرود کار میکند:

$("#field").click(eventHandler);

function eventHander() {
  invokeClassMethod();
  // do other stuff
}

من این را در تایپاسکریپت امتحان کردم و خطا گرفتم زیرا به نظر میرسد که زمینه "this" به چیزی تغییر کرده است که کلاس من نیست.

$("#field").click(this.eventHandler);

eventHandler() {
  this.invokeClassMethod();
  // do other stuff
}

به من خطا میدهد زیرا "invokeClassMethod" تعریف نشده است.

من تازه با تایپاسکریپت آشنا شدهام، پس کسی میتواند لطفاً به من بگوید مشکل چیست و چگونه آن را برطرف کنم؟

پاسخ شماره ۱

آه، اوکی، جواب ساده بود و واقعاً به این برمیگردد که من با ویژگیهای جاوااسکریپت آشنایی نداشتم... اینجا نحوهای که آن را کار کردم آورده شده:

$("#field").click(() => this.eventHandler());

استفاده از bind() نیز کار میکند:

$("#field").click(this.eventHandler.bind(this));

و jQuery proxy کار میکند:

$("#field").click($.proxy(this.eventHandler, this));