是否有任何「自動方式」在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