Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在Flex中将数据从弹出窗口传递到弹出窗口_Apache Flex_Popup_Message Passing - Fatal编程技术网

Apache flex 在Flex中将数据从弹出窗口传递到弹出窗口

Apache flex 在Flex中将数据从弹出窗口传递到弹出窗口,apache-flex,popup,message-passing,Apache Flex,Popup,Message Passing,我有一个包含数据网格的web应用程序。双击该网格的任何一行将打开一个弹出窗口(我们称之为popup1)。现在这个弹出窗口1再次打开一个新的弹出窗口(我们称它为弹出窗口2) 当我关闭popup2时,我需要向popup1传递一个对象。哪种方法最简单 提前谢谢 (PS:在从popup1打开popup2时,我在popup2的关闭事件上添加了一个事件侦听器)我只需创建并调用一个新函数,该函数将创建popup2窗口(通过PopUpManager)并将对象传递给该函数。popup2的子对象(可能是titlew

我有一个包含数据网格的web应用程序。双击该网格的任何一行将打开一个弹出窗口(我们称之为popup1)。现在这个弹出窗口1再次打开一个新的弹出窗口(我们称它为弹出窗口2)

当我关闭popup2时,我需要向popup1传递一个对象。哪种方法最简单

提前谢谢


(PS:在从popup1打开popup2时,我在popup2的关闭事件上添加了一个事件侦听器)

我只需创建并调用一个新函数,该函数将创建popup2窗口(通过PopUpManager)并将对象传递给该函数。popup2的子对象(可能是titlewindow或panel的自定义组件)可以从对象填充,也可以将对象传递给它

  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);

    }

这是一种方法。

我认为bu@ajay87建议的解决方案是错误的

popup1不应该“知道”popup2,它们应该是解耦的,视图不应该在其他视图中调用函数

这种行为应该使用事件来实现,您应该打开popup2,然后分派和事件(在popup2中收听)

另一种方法是相同的,您应该使用从弹出窗口2发送的事件获取数据,而不是激活函数或其他类似的东西


通过这种方式,您的视图是解耦的,不会中断您对实现的更改,而且,您将能够在不使用此功能的情况下显示popup 2,反之亦然。

我将创建一个自定义事件,您将在popup 2关闭时触发该事件。在关闭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);
传递数据:

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);
var newEvent:MyCustomEvent=newmycustomevent();
newEvent.myDataToPass=;
调度事件(newEvent);

当popup2关闭时,我需要从popup2到popup1返回一些数据。啊,对不起,误读了您的问题。在这种情况下,当调用函数打开下一个弹出窗口时,在关闭它之前,您可以从中获取所需的所有信息,存储在object中并将其传递给新的弹出窗口。您不觉得有点极端吗?首先,这里没有人提到使用某种模式。第二,即使在这种模式下,你也不能真正把一个组件看作是一个单独的视图。你有机会尝试我发布的答案吗?“杰森,实际上,我通过使用共享对象而逃脱了:PUP使用SyrdObjts在弹出窗口之间传递数据?如果用户禁用本地存储怎么办?应该有更好的方法在组件之间传递对象。