A页面中弹出一个窗体B,在B中进行操作之后并将返回值传递回A页面,A页面接受返回值之后再进行相应的处理。
我所采取的做法:
在B中做出如下声明:
var callback:Function;
var parentView:Object;
在B中需要回调的方法中写入:
callback.call(parentView,[参数列表]);
在A中做如下处理:
var b:B
在A中弹出B页面的那个方法中写入:
b.parentView = this;
b.callback = callbackHandler;//callbackHandler是自定义的响应回调的方法
这样子就OK了。
<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"> <fx:Script> <![CDATA[ private var _callBackFunction:Function; public function set callBackFunction(value:Function):void { _callBackFunction = value; } private function onClick(event:MouseEvent):void{ _callBackFunction.call(null,ti.text); } ]]> </fx:Script> <s:VGroup width="100%" height="100%"> <s:TextInput id="ti"/> <s:Button id="btn" label="Click me" click="onClick(event)" /> </s:VGroup> </s:Group>
- var myView:MyComponent2 = PopUpManager.createPopUp(this,MyComponent2,false) as MyComponent2;
- myView.callBackFunction = callBack;
- PopUpManager.centerPopUp(myView);
- private function callBack(str:String):void{
- trace(str);
- }