Aufruf eine externe Methode von einer Komponente in Flex 3
-
18-09-2019 - |
Frage
habe ich eine Anwendung eine datagrid
mit einer benutzerdefinierten Spalte in Flex 3 zu zeigen.
Wie kann ich die Methode loadDetails in diesem Code:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
public function loadDetails(id:String) : void { // Some code here
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{[{id:'123456',name:'',address:''}]}">
<mx:columns>
<mx:DataGridColumn headerText="Serial" dataField="id"/>
<mx:DataGridColumn headerText="Cliente" dataField="name"/>
<mx:DataGridColumn headerText="Dirección" dataField="address"/>
<mx:DataGridColumn width="50" dataField="id" headerText="">
<mx:itemRenderer>
<mx:Component>
<mx:LinkButton label="" toolTip="Details" icon="@Embed('../resources/icons/details.png')" click="loadDetails(data.id);">
</mx:LinkButton>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</mx:Application>
Als ich versuchte, diesen Code Flex wirft einen Fehler auszuführen. Er sagt, dass loadDetails nicht definiert ist. Ich nehme an, dass Fehler aufgrund von Umfang ist. Aber ich habe keine Ahnung, wie es zu lösen.
Lösung
Alles, was innerhalb des Component-Tages wird im Grunde ein Descriptor für eine Komponente Fabrik sein. Dafür, irgendetwas in diesem Tag wird in einem lokalen Bereich sein. Sie können jedoch die Eigenschaft outerdocument verwenden (wenn ich mich richtig erinnere) auf das Dokument zuzugreifen, wo-in, den itemRenderer platziert wird.
<mx:LinkButton label="" toolTip="Details" icon="@Embed('../resources/icons/details.png')" click="outerDocument.loadDetails(data.id);"/>
Andere Tipps
oder ein Bubbling-Ereignis verwenden, um einen Zuhörer auf dem Formular zu signalisieren (oder anderswo), was Sie tun wollen.