将数据从弹出窗口传递给父级

时间:2011-01-01 04:09:39

标签: actionscript-3 flex popup

我有一个有弹出孩子的父母。当父加载时,我必须在弹出窗口内调用一个函数而不显示弹出窗口(因此,我加载“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>

更新:我想我的问题可以更容易地说明:“有没有办法从父母调用孩子的功能而不实际加载孩子?”

1 个答案:

答案 0 :(得分:1)

好吧,如果在您孩子的功能中,您不需要访问其任何UI组件,那么您可以在父视图中实例化该子组件并调用该方法。 当您需要在以后显示弹出窗口时,请将PopupManager addPopup方法与此现有实例一起使用,而不是使用createPopup