Flex 组件通信
Posted
技术标签:
【中文标题】Flex 组件通信【英文标题】:Flex component communication 【发布时间】:2011-01-16 21:55:03 【问题描述】:我使用从不同的 MXML 文件加载的弹出窗口:
private function showAddPopUp():void
addPopUP = PopUpManager.createPopUp(this, add_popup, true);
PopUpManager.centerPopUp(addPopUP);
那个文件如下(add_popus.mxml):
<mx:VBox paddingLeft="5" paddingTop="5" paddingRight="5" paddingBottom="5">
<mx:Label text="Enter name of the source:" />
<mx:TextInput id="textName" />
<mx:Label text="Enter URL for the source:" />
<mx:TextInput id="textURL" />
<mx:HBox >
<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
【问题讨论】:
为什么自定义事件不起作用?你有错误吗?难道不能为那个事件获得一个监听器吗? 是的,自定义事件是这样做的正确方法。如果它们不起作用,那么让我们帮助您找出问题所在。 从文本字段传递字符串到底是什么意思?类似this.owner.someMethod(textName.text);
?这不是最好的方法 - 事件传播是要走的路。
【参考方案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);
【讨论】:
它确实有效,但我仍在尝试从文本字段传递字符串。以上是关于Flex 组件通信的主要内容,如果未能解决你的问题,请参考以下文章
使用 RemoteObject 和多个组件时的 Flex 4 最佳实践