将数据从弹出窗口传递到Flex中的弹出窗口

我有一个包含数据网格的Web应用程序。双击该网格的任何一行将打开一个弹出窗口(让我们称之为popup1)。现在这个popup1再次打开一个新的弹出窗口(让我们称之为popup2)。 当我关闭popup2时,我需要将一个Object传递给popup1。哪种方法最简单? 提前致谢 (PS:从popup1打开popup2时,我在popup2的Close事件上添加一个事件监听器)     
已邀请:
我会创建一个自定义事件,当popup2关闭时你会触发它。在关闭popup2之前,将您的数据添加到事件中并将其关闭。 Popup1将拥有MyCustomEvent的事件监听器,并且可以访问myDataToPass属性。就像是: MyCustomEvent:
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);
    
恕我直言,解决方案建议bu @ ajay87是错误的。 popup1不应该“知道”popup2,它们应该是解耦的,视图不应该在其他视图中调用函数。 这种行为应该使用事件来实现,你应该打开popup2然后调度和事件(在弹出窗口2中监听它)。 另一种方式是相同的,你应该使用从弹出窗口2调度的事件来获取数据,而不是激活函数或其他类似的东西。 通过这种方式,您的视图将被分离并且不会破坏您更改实现,此外,您将能够显示没有此功能的弹出窗口2,反之亦然。     
我只会制作并调用一个新函数,它将生成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);

    }
这是这样做的一种方式。     

要回复问题请先登录注册