是否有任何“自动方式”在ActionScript 3中将“对象”转换为个性化模型数据类型?将ActionScript对象转换为模型
例子:
package Example{
public class ExampleModel{
private _id:int;
private _randomAttribute:String;
public function ExampleModel(){
_id = 0;
_randomAttribute = "";
}
public function get id():int{
return _id;
}
public function set id(value:int):void{
_id = value;
}
public function get randomAttribute():String{
return _randomAttribute;
}
public function set randomAttribute(value:String):void{
_randomAttribute = value;
}
}
}
然后,在我的代码中的一些部分,让我们假设我有这样的事情:
var _obj:Object = new Object();
_obj.id = 1;
obj.randomAttribute = "Hello World";
我想要什么会是这样的:
var _exampleModel:ExampleModel = obj as ExampleModel;
但是当我这样做时,_exampleModel上的结果是null。 任何想法? 谢谢。
编辑:
根据马尼什的回答,都让我改变的是p的类型var,这让我去通过各种属性:
public function fromObject(obj:Object):void{
//p:* includes every type of attributes.
for (var p:* in obj)
if (this.hasOwnProperty(p))
// Set private var directly.
this["_" + p] = obj[p];
}
感谢马尼什和rcdmk。 Manish的回答对我来说已经足够了,根据rcdmk的评论,p:String并不是关于循环将要经历的数据类型,它实际上是属性的名称,这是有道理的,因为每个名称是字符串。
你能告诉我们更多关于你为什么试图达到这个目的吗?这违背了ActionScript的设计理念,可能有更好的方法来实现你的目标。 – 2012-03-04 19:42:59
当用户双击dataGrid上的记录时,我会自动打开一个包含该实体表单的不同状态,并用他的注册表(dataGridId.selectedItem)填充所有字段。但是这是一个对象,当我要发送这个PHP时,我“手动”将整个表单转换为个性化模型。如果我可以用模型绑定表单,则不再需要遍历所有字段并逐个设置Model属性。 – 2012-03-04 21:05:24