2010-02-15 32 views
0

我使用来自不同MXML文件加载一个弹出:Flex组件通信

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

该文件是如下(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> 

问题是我不千牛被点击在弹出后buttonOK流如何从文本输入传递的文本值到主组件。我尝试了自定义事件,但没有奏效。文档不是很有帮助。我会欣赏任何想法。

全部代码是在这里:http://github.com/jbajor/Newspapair

+0

为什么没有自定义事件的工作吗?你有错误吗?难道不可能让这个事件的听众听到吗? – MysticEarth

+0

是的,自定义事件是这样做的正确方法。如果他们不工作,那么让我们帮你弄清楚什么是错的。 – CookieOfFortune

+0

究竟你是什么意思从文本字段传递字符串是什么意思?像'this.owner.someMethod(textName.text);'?这不是做这件事的最好方式 - 事件传播是要走的路。 – Amarghosh

回答

1

调度从按钮事件单击

<!-- 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> 

而且听它在其他类。 event.target会给你一个句柄弹出。

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

它确实有效,但我仍然试图从文本字段传递字符串。 – Jacek