TypeScript klickhändelsehanterare
I Javascript fungerar följande kod som förväntat:
$("#field").click(eventHandler);
function eventHander() {
invokeClassMethod();
// do other stuff
}
Jag försökte detta i Typescript och jag får ett fel eftersom det verkar som att kontexten för "this" har ändrats till något som inte är min klass.
$("#field").click(this.eventHandler);
eventHandler() {
this.invokeClassMethod();
// do other stuff
}
ger mig ett fel eftersom "invokeClassMethod" är odefinierad.
Jag är ny på Typescript, så kan någon snälla berätta vad som är fel och hur man fixar det?
Svar #1
Ah ok, svaret var enkelt och handlar egentligen om att jag inte är bekant med Javascript-funktioner... här är hur jag fick det att fungera:
$("#field").click(() => this.eventHandler());
att använda bind() fungerar också:
$("#field").click(this.eventHandler.bind(this));
och jQuery-proxy fungerar:
$("#field").click($.proxy(this.eventHandler, this));
