页面组件繁多的时候,可以通过反射封装其输入或显示的值。
方法代码:
方法执行:
视图:
[img]http://dl.iteye.com/upload/attachment/343921/b20633a7-723d-3607-bb5c-cf98a7da78e5.png[/img]
方法代码:
package pizazz.flex4.utility{
public class FormatUtil{
public static const DEF_REPLACE:Object =
{"'": "’", "<": "<", ">": ">"};
public static function replaceAll(value:String,
replace:Object = null):String{
for(var _key:String in replace){
value = value.replace(new RegExp(_key, "g"), replace[_key]);
}
return value;
}
}
}
package pizazz.flex4.utility{
import flash.utils.describeType;
import spark.components.Label;
import spark.components.TextArea;
import spark.components.TextInput;
public class ParamUtil{
public static function mxml2Obj(mxml:*, target:Object = null):Object{
var _xml:XML = describeType(mxml);
var _label:XMLList =
_xml.accessor.(@type == "spark.components::Label");
var _textInput:XMLList =
_xml.accessor.(@type == "spark.components::TextInput");
var _textArea:XMLList =
_xml.accessor.(@type == "spark.components::TextArea");
target = target ? target : {};
describe(_label,
function(id:String):void{
target[id] = replace(Label(mxml[id]).text);
}
);
describe(_textInput,
function(id:String):void{
target[id] = replace(TextInput(mxml[id]).text);
}
);
describe(_textArea,
function(id:String):void{
target[id] = replace(TextArea(mxml[id]).text);
}
);
return target;
function replace(value:String):String{
return FormatUtil.replaceAll(value, FormatUtil.DEF_REPLACE);
}
function describe(list:XMLList, forback:Function):void{
for each(var _tmp:XML in list){
var _id:String = _tmp.@name;
if(mxml[_id]){
forback(_id);
}
}
}
}
}
}
方法执行:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600">
<s:layout>
<s:BasicLayout />
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import pizazz.flex4.utility.ParamUtil;
private function submit():void{
var _param:Object = ParamUtil.mxml2Obj(this);
var _info:String = "";
for(var _key:String in _param){
_info += _key + " : " + _param[_key] + "\n";
}
Alert.show(_info);
}
]]>
</fx:Script>
<s:Panel width="320" height="240">
<s:layout>
<s:VerticalLayout paddingLeft="20" gap="20" />
</s:layout>
<mx:Form width="100%" height="100%">
<mx:FormItem width="100%" label="信息1">
<s:Label id="info1" width="200" text="文本信息" />
</mx:FormItem>
<mx:FormItem width="100%" label="信息2">
<s:TextInput id="info2" width="200" text="输入>" />
</mx:FormItem>
<mx:FormItem width="100%" label="信息3">
<s:TextInput width="200" text="无id" />
</mx:FormItem>
<mx:FormItem width="100%" height="100%" label="信息4">
<s:TextArea id="info4" width="200" height="100%"
verticalScrollPolicy="on" text="输入'" />
</mx:FormItem>
<s:HGroup width="100%" horizontalAlign="right"
verticalAlign="bottom">
<s:Button width="100" label="提交" click="submit()" />
</s:HGroup>
</mx:Form>
</s:Panel>
</s:Application>
视图:
[img]http://dl.iteye.com/upload/attachment/343921/b20633a7-723d-3607-bb5c-cf98a7da78e5.png[/img]