我一直致力于使用值对象(VO)来操作客户端数据的Flex项目。在类定义之前,在[RemoteClass]标记的帮助下填充VO。
数据库结构已经过优化,因此这些表格包含以下字段:
optionsName:“1,2,3,4,5,6”
在项目范围内,此值(“1,2,3,4,5,6”)表示一组动态数字。
默认情况下,optionsName类字段填充字符串“1,2,3,4,5,6”,它可以正常工作。但是我将此字段用作与业务逻辑对应的一组数字,并且将它们作为数组实例操作更方便。一般来说,最好的解决方案是订阅VO的序列化/反序列化事件并执行额外的转换。
问题是:如何在Flex / ActionScript中实现这一目标?
我知道当结果从远程对象到达时我可以这样做,但从我的角度来看,这不是一个好的解决方案。我也知道实现flash.utils.IExternalizable接口的解决方案。
主要思想是强制Flex在序列化之前和反序列化VO之后调用所需的方法。
提前谢谢。
祝你好运, Viktor Burdeinyi
答案 0 :(得分:1)
将该属性写为支持字符串和数组作为输入的setter,并即时转换。
private var _optionsName:Array;
public function get optionsName():Array { return _optionsName; }
public function set optionsName(newOptionsName:*):void {
if(newOptionsName is String) {
_optionsName = newOptionsName.split(", ");
} else {
_optionsName = newOptionsName as Array;
}
}