flex 中子窗口通过事件刷新父窗口中的数据

经常听到有人问子窗口操作完成之后,要刷新父窗口的数据怎么办??有人用过parentDocument;
有人使用过在子窗口中new一个父窗口的对象,然后通过这个对象访问父窗口的方法或属性;
。。。。。

第一种,也可以实现。但是第二种就没法理解了,严格来说子窗口是不能new父窗口的实例的。。。。最好的方法是用事件,今天就弄一个事件的例子吧,大牛们可以不看。新童鞋务必看看,有帮助的。。。。附件可直接下载

运行页面如下


点击新增

点击保存


代码如下:
总共3个文件,一个名为Parent的application,一个名为Child的titleWindow,还有一个是自定义的一个事件。
Parent.mxml

  1.                            xmlns:s="library://ns.adobe.com/flex/spark" 
  2.                            xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
  3.         
  4.                
  5.                         import mx.collections.ArrayCollection;
  6.                         import mx.managers.PopUpManager;
  7.                         
  8.                         [Bindable]
  9.                         public var ac:ArrayCollection=new ArrayCollection([
  10.                                 {name:"周结",sex:"男",age:"23"},
  11.                                 {name:"小静",sex:"女",age:"19"},
  12.                                 {name:"小二",sex:"男",age:"20"},
  13.                                 {name:"大牛",sex:"男",age:"44"}
  14.                         ]); 
  15.                         private var child:Child = new Child();
  16.                         protected function button1_clickHandler(event:MouseEvent):void
  17.                         {
  18.                                 PopUpManager.addPopUp(child,this,true);
  19.                                 PopUpManager.centerPopUp(child);
  20.                                 child.addEventListener(MyEvent.SAVE_OK,saveSuccess);
  21.                         }
  22.                         
  23.                         private function saveSuccess(e:MyEvent):void
  24.                         {
  25.                                 ac.addItem(e.data);
  26.                         }
  27.                 ]]>
  28.         

  29.         
  30.                
  31.         
  32.         
  33.         
  34.                
  35.                         
  36.                         
  37.                         
  38.                
  39.         
  40.         
复制代码
Child.mxml

  1.                            xmlns:s="library://ns.adobe.com/flex/spark" 
  2.                            xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
  3.         
  4.                
  5.         

  6.         
  7.                
  8.                         import mx.managers.PopUpManager;
  9.                         protected function button1_clickHandler(event:MouseEvent):void
  10.                         {
  11.                                 var obj:Object = new Object();
  12.                                 obj.name = dname.text;
  13.                                 obj.age = age.text;
  14.                                 obj.sex = sex.text;
  15.                                 this.dispatchEvent(new MyEvent(MyEvent.SAVE_OK,obj));
  16.                                 PopUpManager.removePopUp(this);
  17.                         }
  18.                 ]]>
  19.         

  20.         
  21.                
  22.         
  23.         
  24.         
  25.         
  26.         
复制代码
MyEvent.as
  1. package event
  2. {
  3.         import flash.events.Event;
  4.         
  5.         public class MyEvent extends Event
  6.         {
  7.                 public static const SAVE_OK:String="saveOk";
  8.                 private var _data:Object;
  9.                 public function MyEvent(type:String,data:Object=null, bubbles:Boolean=false,cancelable:Boolean=false)
  10.                 {
  11.                         this._data=data;
  12.                         super(type, bubbles, cancelable);
  13.                 }

  14.                 public function get data():Object
  15.                 {
  16.                         return _data;
  17.                 }

  18.                 public function set data(value:Object):void
  19.                 {
  20.                         _data = value;
  21.                 }

  22.         }
  23. }
复制代码
转自:http://www.ityangba.com/thread-302-1-1.html

你可能感兴趣的:(Flex,flex,button,function,object,library,application)