我有一个有弹出孩子的父母。当父加载时,我必须在弹出窗口内调用一个函数而不显示弹出窗口(因此,我加载“pupLove”但不在布局中包含它)....然后我将这些数据传递给父级。当用户手动点击另一个按钮打开弹出窗口时,同样的功能被称为&数据传递给父级。但是,我无法将dg.length传递给父级。我认为根本问题是我正在加载“pupLove”&因此父母感到困惑.....我猜我是否摆脱了“pupLove”我可以正确传递数据但是需要在父母的creationComplete上调用孩子的功能....我该怎么办是什么?
这是我的父母:
<?xml version="1.0" encoding="utf-8"?>
<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"
backgroundColor="green" width="50%" height="100%"
xmlns:local="*"
>
<fx:Script>
<![CDATA[
import pup;
import mx.managers.PopUpManager;
public function showPup(evt:MouseEvent):void {
var ttlWndw:pup = PopUpManager.createPopUp(this, pup, true) as pup;
PopUpManager.centerPopUp(ttlWndw);
}
]]>
</fx:Script>
<mx:VBox>
<local:pup id="pupLove" visible="false" includeInLayout="false" />
<s:Button click="showPup(event);" label="launch Pup" />
<mx:Text id="Ptest" color="black" text="from Parent:{pupLove.dg.length}" />
</mx:VBox>
</s:Application>
一个叫做'pup.mxml'的弹出小孩:
<?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[
public function init():void{
// send php call
}
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
private function removePup(evt:Event):void {
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="dg">
</s:ArrayCollection>
</fx:Declarations>
<s:TitleWindow width="100%" height="100%" close="removePup(event)">
<mx:VBox>
<mx:Text id="test" color="red" text="from Child:{dg.length}" />
<s:Button label="add Items" click="dg.addItem({id:'cat'})" />
</mx:VBox>
</s:TitleWindow>
</s:Group>
更新:我想我的问题可以更容易地说明:“有没有办法从父母调用孩子的功能而不实际加载孩子?”
答案 0 :(得分:1)
好吧,如果在您孩子的功能中,您不需要访问其任何UI组件,那么您可以在父视图中实例化该子组件并调用该方法。 当您需要在以后显示弹出窗口时,请将PopupManager addPopup方法与此现有实例一起使用,而不是使用createPopup