2011-01-01 6 views
0

親がポップアップの子を持っています。親がロードされると、ポップアップを表示せずにポップアップ内の関数を呼び出す必要があります(したがって、 "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> 

がUPDATE:私は私の質問は、より容易と述べることができると思います。「があります子を実際に読み込まずに親から子の関数を呼び出す方法は?」

答えて

1

あなたの子供の機能では、UIコンポーネントにアクセスする必要がない場合、親ビューで子をインスタンス化してメソッドを呼び出すことができます。 後でポップアップを表示する必要がある場合は、createPopup

+0

を使用する代わりに、この既存のインスタンスでPopupManager addPopupメソッドを使用すると、子ビューを親ビューにインスタンス化してメソッドを呼び出すことができます。それ? –

+0

varポップアップ:pup = new pup(); popup.init(); –

+0

は動作しますが、pupのinit()関数がpup内のいくつかのビジュアルコンポーネントを参照しているため、nullオブジェクト参照にアクセスできないというエラーが発生します...私はpopup.initialize()を試しましたが、 –

関連する問題