Flex Zugriff auf Variablen aus einem Bauteil in ein anderes
Ich haben eine Haupt-Anwendung, hat eine int-variable deklariert. Ich möchte den Zugriff auf diese variable in einer anderen Komponente, die in ein anderes Paket. Wie kann ich dies tun?
Main.mxml (Standard-Paket)
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
preinitialize = "foo()">
<fx:Script>
<![CDATA[
public var value1:int;
public function foo():void {
value1 = 5;
}
]]>
</fx:Script>
<\s:Application>
Comp.mxml-Komponenten-Paket)
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationcomplete = "foo2()">
<fx:Script>
<![CDATA[
public function foo2(): void{
//------> access value1 from Main.mxml here.
}
]]>
</fx:Script>
</s:Group>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da die variable, die Sie brauchen, ist in der Haupt-Anwendung die Klasse, die Sie verwenden können, die parentApplication - Eigenschaft darauf zugreifen.
Im Allgemeinen der richtige Weg, dies zu tun ist, übergeben Sie einen Verweis auf die Quelle-Objekt (in diesem Fall die Anwendung) an den Aufrufer-Objekt - oder übergeben Sie den Wert, der sich durch einige öffentliche Eigentum. Unter der Annahme, dass
Comp
in Frage ist in der Haupt-app selbst können Sie tun:Müssen Sie irgendeine Art von Umleitung, wie sagen, die Komponente, wo Sie suchen, d.h.:
Und Anwendung:
Sonst, Sie konnte erstellen einer singleton-irgendwie - ein-Klasse-große statische variable. Aber das ist ziemlich chaotisch.
Ihre Haupt-app sollte einen Verweis auf die Komponente, welche Bedürfnisse die int-Wert. Und der Wert sollte festgelegt werden, von der Sie Haupt-app. Wenn der Wert muss eingestellt werden in Reaktion auf ein Ereignis in der Komponente, die die Komponente auslösen könnte und ein Ereignis ausgelöst, und die Haupt-app könnte haben einen Ereignis-listener, und übergeben Sie dann die erforderlichen int.
Könnte man auch binden die Werte in den Haupt-apps actionscript-Code ein:
BindingUtils.bindProperty ("ich", das.Komponente, das "ich"), aber die bisherige Methode ist eine bessere Praxis.
, Wie Sie über Benutzerdefinierte Ereignisse.
http://livedocs.adobe.com/flex/3/html/help.html?content=createevents_3.html
Wenn Sie entwickeln Ihre individuelle Veranstaltung können Sie den Zugriff auf die variable in der Anwendung.
Ansonsten gehen Sie für
mx.core.Application.application
Zugriff auf die wichtigsten Anwendung