`

Flex 父窗口 子窗口 数据传递

    博客分类:
  • Flex
 
阅读更多

Flex 父窗口 子窗口 数据传递
2009-01-11 1:51

这里通过一个实例演示Flex父窗口和弹出的子窗口之间的数据传输。

先创建一个MXML component 命名为ListTitleWindow.mxml (Based on : TitleWindow)

xml 代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="300"  
  3.     creationComplete="initComponent()"  
  4.       showCloseButton="true"  
  5.       close="closeWindow()">  
  6.        
  7.     <mx:Script>  
  8.   
  9.         <CDATA  
  10.             
  11.          /* 数据xml格式如下:   
  12.             <items>  
  13.                 <item label="Tom" data="num001"/>  
  14.                 <item label="Lucy" data="num002"/>  
  15.             </items>   
  16.          */   
  17.            
  18.           import mx.managers.PopUpManager;   
  19.           import mx.rpc.events.ResultEvent;   
  20.           import mx.controls.Alert;   
  21.             
  22.           [Bindable]public var mainApp:Object = null;     
  23.           [Bindable]public var headTitle:String;           
  24.           [Bindable]public var url:String;   
  25.           [Bindable]public var selectedItem:Object;   
  26.           [Bindable]public var callbackFunction:Function;   //回调函数   
  27.             
  28.           private function initComponent():void {   
  29.              //listDataService.url = url;   
  30.              listDataService.send();   
  31.           }   
  32.             
  33.          //closeWindow   
  34.           private function closeWindow():void {   
  35.                 PopUpManager.removePopUp(this);   
  36.           }   
  37.             
  38.           private function submit():void {   
  39.               PopUpManager.removePopUp(this);   
  40.               if (selectedItem != null && callbackFunction != null) {   
  41.                   //调用父窗体的方法并以参数形式返回选择结果   
  42.                   callbackFunction.call(mainApp, selectedItem.data);   
  43.               }   
  44.           }   
  45.             
  46.           private function mySelection(oEvent:Event):void {   
  47.              selectedItem = oEvent.target.selectedItem;   
  48.           }      
  49.            
  50.          private function initListData(event:ResultEvent):void {   
  51.              //使用HTTPService返回的xml数据,初始化List数据   
  52.             dataList.dataProvider = event.result.items.item;   
  53.          }   
  54.   
  55.         >  
  56.     </mx:Script>  
  57.   
  58.     <mx:HTTPService id="listDataService" url="{url}" showBusyCursor="true"  result="initListData(event)" />  
  59.   
  60.     <mx:Label text="{headTitle}"/>  
  61.        
  62.     <mx:List id="dataList" width="100%" color="blue" change="mySelection(event)" />  
  63.   
  64.     <mx:VBox width="100%">  
  65.         <mx:Label text="Selected State: {selectedItem.label}"/>  
  66.         <mx:Button label="OK" click="submit();"/>  
  67.     </mx:VBox>  
  68.        
  69. </mx:TitleWindow>  

使用一个MXML application 作为父窗体,代码如下

xml 代码
  1. xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"  
  3.     initialize="initApp()">  
  4.     <mx:Style source="styles/main.css"/>  
  5.                    
  6.     <mx:Script>  
  7.     
  8.      import mx.controls.Alert;
  9.      import flash.display.StageDisplayState;
  10.      import components.window.ListTitleWindow;
  11.      import mx.containers.TitleWindow;
  12.      import mx.managers.PopUpManager;
  13.      import mx.collections.ArrayCollection;
  14.      private function initApp() : void {
  15.      }
  16.      private function showTitleWindow():void {
  17.          var titleWindowInstance:ListTitleWindow =
  18.              ListTitleWindow(PopUpManager.createPopUp(this, ListTitleWindow, false));
  19.         
  20.          titleWindowInstance.title = "Welcome";
  21.          titleWindowInstance.width = 400;
  22.          titleWindowInstance.height = 300;   
  23.          titleWindowInstance.mainApp = this;  
  24.          titleWindowInstance.headTitle = "Select a item.";
  25.          titleWindowInstance.url="http://localhost:8080/test.xml";
  26.          titleWindowInstance.callbackFunction = this.myFunction;
  27.         
  28.          PopUpManager.centerPopUp(titleWindowInstance);
  29.       }
  30.          
  31.      public function myFunction(bb:String):void {
  32.          Alert.show(bb);
  33.      }
  34.      ]]>  
  35.   
  36.     mx:Script>  
  37.        
  38.     <mx:Button x="63" y="96" label="Button" click="showTitleWindow();"/>  
  39.        
  40. mx:Application>  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics