Я попытался написать класс в TypeScript, который имеет определенный метод, который действует как обратный обработчик обработчика события jQuery.
class Editor {
textarea: JQuery;
constructor(public id: string) {
this.textarea = $(id);
this.textarea.focusin(onFocusIn);
}
onFocusIn(e: JQueryEventObject) {
var height = this.textarea.css('height'); // <-- This is not good.
}
}
В обработчике событий onFocusIn TypeScript видит 'this' как 'this' класса. Однако jQuery переопределяет эту ссылку и устанавливает ее в объект DOM, связанный с событием.
Один из вариантов заключается в определении лямбда внутри конструктора как обработчика события, и в этом случае TypeScript создает своего рода закрытие со скрытым _this псевдонимом.
class Editor {
textarea: JQuery;
constructor(public id: string) {
this.textarea = $(id);
this.textarea.focusin((e) => {
var height = this.textarea.css('height'); // <-- This is good.
});
}
}
Мой вопрос в том, есть ли другой способ получить доступ к этой ссылке в обработчике событий на основе метода с помощью TypeScript, чтобы преодолеть это поведение jQuery?