передать данные из всплывающего окна к родителю - PullRequest
0 голосов
/ 01 января 2011

У меня есть родитель с всплывающим ребенком.Когда родитель загружается, я должен вызвать функцию во всплывающем окне, не показывая всплывающее окно (таким образом, я загружаю "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 Ответ

1 голос
/ 01 января 2011

Что ж, если в функции вашего ребенка вам не требуется доступ ни к одному из его компонентов пользовательского интерфейса, вы можете создать экземпляр дочернего элемента в родительском представлении и вызвать метод. Когда вам необходимо отобразить всплывающее окно, используйте метод addPopup PopupManager с этим существующим экземпляром вместо использования createPopup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...