riq*_*ang 3 typescript jquery-events
在 Javascript 中,以下代码按预期工作:
$("#field").click(eventHandler);
function eventHander() {
invokeClassMethod();
// do other stuff
}
Run Code Online (Sandbox Code Playgroud)
我在 Typescript 中尝试了此操作,但收到错误,因为“this”的上下文似乎已更改为不属于我的类的内容。
$("#field").click(this.eventHandler);
eventHandler() {
this.invokeClassMethod();
// do other stuff
}
Run Code Online (Sandbox Code Playgroud)
给我一个错误,因为“invokeClassMethod”未定义。
我是 Typescript 的新手,有人可以告诉我出了什么问题以及如何修复它吗?
好吧,答案很简单,归根结底是因为我不熟悉 Javascript 功能……以下是我如何让它工作的:
$("#field").click(() => this.eventHandler());
Run Code Online (Sandbox Code Playgroud)
使用bind()也可以:
$("#field").click(this.eventHandler.bind(this));
Run Code Online (Sandbox Code Playgroud)
和 jQuery 代理的工作原理:
$("#field").click($.proxy(this.eventHandler, this));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12864 次 |
| 最近记录: |