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));

Relaterade artiklar