Je dois pouvoir appeler une méthode à partir d'un composant situé sous l'application principale dans Flex 4. Quelqu'un peut-il me dire s'il vous plaît comment faire ceci sans utiliser FlexGlobals?Flex 4: Accéder à la méthode publique dans l'application principale à partir du composant
Un exemple de code est joint. Merci d'avance.
// TestApp.mxml (application)
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication 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="initApp()">
<fx:Script>
<![CDATA[
import com.TestComp;
import mx.managers.PopUpManager;
public function myMethod():void
{
// do something
}
protected function initApp():void
{
var popUp:TestComp = new TestComp();
PopUpManager.addPopUp(popUp, this, true);
}
]]>
</fx:Script>
</s:WindowedApplication>
// TestComp.mxml (component)
<?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"
width="400" height="300">
<fx:Script>
<![CDATA[
private function doSomething(event:MouseEvent):void
{
// call to myMethod() in TestApp.mxml
}
]]>
</fx:Script>
<s:Button click="doSomething(event)" label="Click Me"/>
</s:Group>
Je ne comprends pas ... pourquoi avez-vous un problème avec les appels FlexGlobals .topLevelApplication.doSomething(); ? ? ? ? –
On m'a dit que c'était une mauvaise pratique. – Reado
C'est une mauvaise pratique si vous développez un composant. Ensuite, si vous le chargez dans une autre application flexible, topLevelApplication sera quelqu'un d'autre. Tant que vous créez une application, elle est suffisamment sûre! ce n'est pas une bonne raison pour laquelle vous devriez envoyer/écouter des événements lorsque vous avez déjà accès à tout ce dont vous avez besoin. –