2

データ グリッドを含む Web アプリケーションがあります。そのグリッドの任意の行をダブルクリックすると、ポップアップが開きます (popup1 と呼びましょう)。今度は、この popup1 が再び新しいポップアップを開きます (popup2 と呼びましょう)。

popup2 を閉じるときは、オブジェクトを popup1 に渡す必要があります。それを行う最も簡単な方法はどれですか?

前もって感謝します

(PS: popup1 から popup2 を開いているときに、popup2 の Close イベントにイベント リスナーを追加しています)

4

3 に答える 3

2

popup2 が閉じられたときに起動するカスタム イベントを作成します。popup2 を閉じる直前に、データをイベントに追加して起動します。Popup1 には MyCustomEvent のイベント リスナーがあり、myDataToPass プロパティにアクセスできます。何かのようなもの:

マイカスタムイベント:

package
{           
    import flash.events.Event;
    import mx.collections.ArrayCollection;

    public class MyCustomEvent extends Event
    {
        public var myDataToPass:ArrayCollection;

        public function MyCustomEvent (type:String, bubbles:Boolean=true, cancelable:Boolean=false)
        {
            super(type, bubbles, cancelable);
        }
    }
}

データを渡す:

var newEvent:MyCustomEvent = new MyCustomEvent();
newEvent.myDataToPass = <your data here>;
dispatchEvent(newEvent);
于 2010-12-07T17:00:12.107 に答える
0

IMHO @ ajay87が間違っていることを示唆する解決策。

popup1 は popup2 を「認識」してはならず、分離する必要があり、ビューは他のビューで関数を呼び出すべきではありません。

この種の動作は、イベントを使用して実装する必要があります。popup2 を開いてから、dispatch と event (popup 2 でリッスン) を実行する必要があります。

他の方法も同じです。ポップアップ 2 からディスパッチされたイベントを使用してデータを取得する必要があります。関数などをアクティブにする必要はありません。

このように、ビューは分離され、実装を変更しても壊れません。また、この関数なしでポップアップ 2 を表示でき、その逆も可能です。

于 2010-12-07T13:52:54.107 に答える
-1

popup2ウィンドウを(PopUpManager経由で)作成し、オブジェクトをこの関数に渡す新しい関数を作成して呼び出すだけです。次に、popup2 の子 (おそらくタイトルウィンドウまたはパネルのカスタム コンポーネント) をオブジェクトから設定するか、オブジェクトを渡すことができます。

  private function displayPopUp2(object:Object):void
    {
    //create an instance of your window
     var popup2:CustomComponentPopUp2 = new CustomComponentPopUp2();
    //pass the object data to a function within side this to populate fields, or this could be done through constructor.

     popup2.populateData(object);

    //then use popup manager to display popup... passing the popup2 as it's child.
    PopUpManager.addPopUp(popup2);

    }

これはそのための 1 つの方法です。

于 2010-12-07T09:52:21.310 に答える