TypeScript 点击事件处理程序

3
在Javascript中,以下代码按预期工作:
$("#field").click(eventHandler);

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

我在Typescript中尝试了这个方法,但出现了一个错误,因为“this”的上下文已经改变成了不是我的类的东西。

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

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

因为"invokeClassMethod"未定义,所以出现了错误。

我是Typescript的新手,请问有人能告诉我出了什么问题以及如何修复吗?

1个回答

5

啊,好的,答案很简单,实际上是因为我对Javascript的特性不熟悉...这是我让它正常工作的方法:

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

使用bind()也可以:

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

jQuery的代理(proxy)用法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接