Hinzufügen von Ereignis-Listenern zu einem Array von Objekten

9

Ich habe ein Array von Objekten (speziell easelJS images) - etwa so:

%Vor%

Was ich tun möchte, ist ein Event-Listener anstelle von:

%Vor%

Ich möchte, dass das Programm genau weiß, auf welche Region geklickt wird, damit ich eine Warnmeldung auf folgende Weise senden kann:

%Vor%     
Ryan Williams 31.07.2013, 21:36
quelle

4 Antworten

10

Sicher. Sie können einfach eine Schließung verwenden, um den Index dieser Iteration zu speichern. Andernfalls werden sie von demselben Funktionsumfang gemeinsam genutzt und geben Ihnen den Wert derselben Iteration. Das Erstellen einer separaten Funktion für jede Funktion speichert den Status dieser Funktion innerhalb der Funktion.

%Vor%

oder besser

%Vor%

ES6 zur Rettung

%Vor%

Wenn Sie das Schlüsselwort let verwenden, wird ein Block-Scoping für die Variable in Iteration erstellt, und der richtige Index wird angezeigt, wenn der Ereignishandler aufgerufen wird.

    
Sushanth -- 31.07.2013 21:45
quelle
7

So etwas sollte funktionieren:

%Vor%

Der Grund dafür ist, dass eine Schließung erstellt wird, die den Wert von index enthält, der in der Warnmeldung angezeigt wird. Jedes Mal, wenn die Schleife durchlaufen wird, wird ein weiterer Abschluss erstellt, der einen anderen Wert von index enthält.

    
Lee Meador 31.07.2013 21:44
quelle
1

Sicher, eine Schließung ist die Lösung, aber da er Ext geladen hat, könnte er es genauso gut benutzen und einen sehr lesbaren Code bekommen. Der Index wird als zweites Argument an Ext.Array.each (Alias ​​an Ext.each ) übergeben.

%Vor%     
rixo 01.08.2013 00:56
quelle
0

Dies ist, was ich für div ids verwende:

%Vor%

Viel Glück!

    
Alexander Rulezovsky 27.06.2016 01:09
quelle