مدیر رویداد کلیک در تایپاسکریپت
در جاوااسکریپت کد زیر همانطور که انتظار میرود کار میکند:
$("#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));
