jQueryイベントへのイベントハンドラーコールバックとして機能するメソッドが定義されたクラスをTypeScriptで記述しようとしました。
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 は this 参照をオーバーライドし、イベントに関連付けられた DOM オブジェクトに設定します。
1 つの代替方法は、コンストラクター内でラムダをイベント ハンドラーとして定義することです。この場合、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.
});
}
}
私の質問は、この jQuery の動作を克服するために、TypeScript を使用してメソッドベースのイベント ハンドラー内で this 参照にアクセスする別の方法はありますか?