2009-06-30 9 views
1

Ich könnte kodieren, was ich so erreichen will:Gibt es in Flex eine "This" -Referenz für eine MXML-Komponente?

<mx:Button id="someButton" click="doRememberButton(someButton)" ... /> 

aber wäre es sehr hilfreich (Ich stelle zusammen eine ziemlich große UI), wenn ich schreiben konnte finden:

<mx:Button click="doRememberButton(this)" ... /> 

Jetzt, Das offensichtliche Problem ist, dass "dies" nicht auf den Button zeigt, sondern auf die Hauptkomponente, die durch die Datei definiert wird, in der sich der Code befindet (zB VBox), aber es wäre eine große Hilfe, wenn ich einen Verweis auf den 'aktuellen' hätte. MXML-Komponente ..

Würde jemand haben eine lösung dafür? Vielen Dank! Tom

Antwort

2

Inline Event-Handler ist wirklich nur Code eingewickelt, so dass Sie das Ereignisobjekt verwenden können Details des Disponenten und andere Ereignisinformation zu erhalten. Wie so:

<mx:Button click="trace(event.target)" /> 

In Ihrem Fall würden Sie die Unterschrift Ihrer Event-Handler ändern müssen, zB:

private function doRememberButton(event:Event):void 
{ 
    ... 
} 

Und im MXML-Code:

<mx:Button click="doRememberButton(event)" /> 

Die Zieleigenschaft der Ereignisklasse ist der ursprüngliche Dispatcher des Ereignisses. Es gibt auch eine currentTarget-Eigenschaft, die das aktuelle Ziel in der Ereigniskette ist. Dies bezieht sich auf Event-Bubbling. Es gibt mehr Informationen zu diesem Thema in Adobe LiveDocs

+0

oder doRememberButton (event.target) müssen Sie Ihren vorhandenen Code nicht ändern. – airportyh

1
private function doRememberButton(ev: Event) { 

//this gives your button 
ev.currentTarget; 


} 
1

hier eine Lösung mehr ist genau die Art und Weise u benötigt

<mx:Button id="someButton" click="doRememberButton(event.currentTarget as Button)" /> 

an der Funktion:

private function doRememberButton(thisBtn:Button):void 
{ 
    ... 
} 

, das ist es! :)

Verwandte Themen