目的: 使用正则表达式对数据进行校验
使用正则表达式的优点: 1. 可进行更为复杂的精确复杂的Validation; 2. 更重要的是, 在动态创建爱UI时, 可在xml, 数据库或其他持久性存储中存放对某一UI的正则表达式, 在创建后便可设定给有关ui.
如某UI只允许输入数字, 可监听FlexEvent.VALUE_COMMIT或Event.CHANG事件:
var regExp:RegExp = new RegExp("^[0-9]*$"); if(!regExp.test(getVauleFromUI())) { _errorMessage = RM.getString(BUNDLE_CONSOLE, "error.msg.regexp.wrong", [regExp.toString()]); }
效果:
设定一个组件的宽高, 且能随着外部容器变化而变化, 使用
explicitMinHeight: Number
布局过程中父级要考虑的组件最小建议高度。
Pasted from <http://livedocs.adobe.com/flex/3_cn/langref/mx/containers/VBox.html>
直接使用顶级方法:
encodeURI(uri:String):String
相关方法:
Boolean(expression:Object):Boolean
将 expression 参数转换为布尔值并返回该值。
Top Level
decodeURI(uri:String):String
将已编码的 URI 解码为字符串。
Top Level
decodeURIComponent(uri:String):String
将已编码的 URI 组件解码为字符串。
Top Level
encodeURI(uri:String):String
将字符串编码为有效的 URI(统一资源标识符)。
Top Level
encodeURIComponent(uri:String):String
将字符串编码为有效的 URI 组件。
Pasted from <http://livedocs.adobe.com/flex/3_cn/langref/package.html>
hboxActions.setStyle(“horizontalAlign”, “right”); 便可实现… 今天早晨脑子被挤,发现设了之后还是靠左…良久, 才想起来没有设定hboxActions的宽度
使用Flex TileList实现如下效果:
考虑到日后可能需要在其后添加按钮, 考虑到日后可能会在后面加入其它内容, 于是继承HBox, 实现IDropInListItemRenderer, IDataRenderer.
但屡屡发现出现错误: 每次仅显示最后的一个或两个Item, 前面的有, 但不再显示.
经过检查, 发现在Renderer中, 实现set data()时, 未呼叫super.data
Container中data setter如下
/** * @private */ public function set data(value:Object):void { _data = value; dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE)); invalidateDisplayList(); }
增加super.data后, 功能实现.
更正后的ItemRender:
package com.liguoliang.es.app.class_.ui { import mx.containers.Box; import mx.containers.BoxDirection; import mx.controls.CheckBox; import mx.controls.listClasses.BaseListData; import mx.controls.listClasses.IDropInListItemRenderer; import mx.core.IDataRenderer; public class RenderForInitCE extends Box implements IDropInListItemRenderer, IDataRenderer { private var _listData:BaseListData; // 为实现IDropInListItemRenderer而创建. /** UI */ protected var _box:Box; protected var _checkBoxCE:CheckBox; public function RenderForInitCE() { super(); _box = new Box(); _box.direction = BoxDirection.HORIZONTAL; _checkBoxCE = new CheckBox(); } //-------------------------Renderer------------------------------- [Bindable("dataChange")] [Inspectable(environment="none")] public function get listData():BaseListData { return _listData; } public function set listData(value:BaseListData):void { _listData = value; } [Bindable("dataChange")] [Inspectable(environment="none")] /** @inheritDoc */ override public function get data():Object { return super.data; } /** @inheritDoc */ override public function set data(value:Object):void { super.data = value; removeAllChildren(); _checkBoxCE.label = (value as ClassEnrollment).user_.nameFull; addChild(_checkBoxCE); _checkBoxCE.percentWidth = 100; } } // End of class } // End of package
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.