Flex两页面间的传值问题总结
众所周知Flex主要用于B/S结构程序的开发,凡是这类型的开发都存在页面间的传值的问题,通常一般的B/S开发主要不外乎使用
地址修改法,隐藏表单域等方法,但是这些方法在Flex中确没有用,
????? 原因是应为Flex支持的模型和普通的B/S开发语言不一样,一般的B/S开发语言使用的主要是请求/响应模型,而Flex采用的是事件驱动模型(这种模型主要见于C/S结构程序),所以我们的Form表单等传值方法就无效了,哪么我们如何在两个这样模型的页面中传递数据呢?下面我们讲述下两种常用的传值方法: ????? 一、?利用ExternalInterface调用Javascript <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ function kk():void{ var value:String = myparam.text; ExternalInterface.call("function(){window.location.href=’http://localhost:8080/send/page.html#param1="+value+"’}"); } ]]> </mx:Script> <mx:TextInput id="myparam"></mx:TextInput> <mx:Button name="ok" click="kk()" x="185" label="提交"></mx:Button> </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" > <mx:Script> <![CDATA[ import mx.managers.IBrowserManager; import mx.managers.BrowserManager; import mx.utils.URLUtil; [Bindable] var param:String; function init():void { var bm:IBrowserManager = BrowserManager.getInstance(); bm.init(); var o:Object = URLUtil.stringToObject(bm.fragment,"&"); param = o.param1; } ]]> </mx:Script> <mx:TextInput id="val" text="{param}"> </mx:TextInput> </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ function submit():void { var param:String = myparam.text; //创建全局SharedObject,如果不用全局就去掉后面的"/",一旦去掉那么cookie只能被自己的Application使用,其他Applicaiton无法看见 //myparam是要求在本机创建一个叫cookie.sol的文件 var obj:SharedObject = SharedObject.getLocal("cookie","/"); obj.data.username=myparam.text; obj.flush(); //调用URLRequest将跳转到second.html页面 var request:URLRequest =new URLRequest(); request.url="second.html"; navigateToURL(request); } ]]> </mx:Script> <mx:TextInput id="myparam"></mx:TextInput> <mx:Button label="提交" click="submit()" x="177"></mx:Button> </mx:Application>
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ [Bindable] var param:String; function init():void { //在本地找到myparam.sol文件 var obj:SharedObject =SharedObject.getLocal("cookie","/"); //读取前页存入的数据 param = obj.data.username; //用完了别忘了将myparam.sol文件删除 obj.clear(); } ]]> </mx:Script> <mx:TextInput id="mypar" text="{param}"></mx:TextInput> </mx:Application> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |