2010-02-15 6 views
0

J'utilise un pop-up chargé de différents fichier MXML:communication des composants Flex

private function showAddPopUp():void{ 
    addPopUP = PopUpManager.createPopUp(this, add_popup, true); 
    PopUpManager.centerPopUp(addPopUP); 
} 

Ce fichier est le suivant (add_popus.mxml):

<mx:VBox width="100%" height="100%" paddingLeft="5" paddingTop="5" paddingRight="5" paddingBottom="5"> 
    <mx:Label text="Enter name of the source:" /> 
    <mx:TextInput width="100%" id="textName" /> 
    <mx:Label text="Enter URL for the source:" /> 
    <mx:TextInput width="100%" id="textURL" /> 
    <mx:HBox width="100%"> 
     <mx:Button label="OK" id="buttonOK" textAlign="center"/> 
     <mx:Button label="Cancel" id="buttonCancel" click="PopUpManager.removePopUp(this)" textAlign="center"/> 
    </mx:HBox> 
</mx:VBox> 

Le problème est que je ne sais pas Comment passer des valeurs de texte des entrées de texte au composant principal après avoir cliqué sur le bouton OK dans le popup. J'ai essayé des événements personnalisés, mais cela n'a pas fonctionné. La documentation n'est pas très utile. J'apprécierai toutes les idées.

code complet est ici: http://github.com/jbajor/Newspapair

+0

Pourquoi les événements personnalisés n'ont-ils pas fonctionné? Avez-vous eu des erreurs? N'était-il pas possible d'avoir un auditeur pour cet événement? – MysticEarth

+0

oui, les événements personnalisés sont la bonne façon de le faire. Si elles ne fonctionnent pas, alors laissez-nous vous aider à comprendre ce qui ne va pas. – CookieOfFortune

+0

Que voulez-vous dire en passant des chaînes de champs de texte? quelque chose comme 'this.owner.someMethod (textName.text);'? Ce n'est pas la meilleure façon de le faire - la propagation d'événements est la voie à suivre. – Amarghosh

Répondre

1

Envoi d'un événement à partir du bouton cliquez sur

<!-- AddPopUp.mxml --> 
<mx:Button label="OK" id="buttonOK" textAlign="center" 
    click="dispatchEvent(new Event(POPUP_DONE))"/> 
<mx:Script> 
<![CDATA[ 
    public static const POPUP_DONE:String = "popupDone"; 
]]> 
</mx:Script> 

Et écouter dans l'autre classe. event.target vous donnera un handle à la popup.

private function showAddPopUp():void 
{ 
    var addPopUp:AddPopup = PopUpManager.createPopUp(this, add_popup, true); 
    addPopUp.addEventListener(AddPopUp.POPUP_DONE, onPopupDone); 
    PopUpManager.centerPopUp(addPopUP); 
} 
private function onPopupDone(e:Event):void 
{ 
    var popup:AddPopUp = AddPopUp(e.target); 
    trace(popup.textName.text); 
} 
+0

Cela fonctionne, mais j'essaie toujours de transmettre des chaînes à partir des champs de texte. – Jacek

Questions connexes