「オブジェクト」をActionScript 3のパーソナライズドモデルデータ型にキャストする「自動方法」はありますか?ActionScriptオブジェクトをモデルにキャスト
例:
var _exampleModel:ExampleModel = obj as ExampleModel;
:私は何をしたいことのようになり
var _obj:Object = new Object();
_obj.id = 1;
obj.randomAttribute = "Hello World";
:
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;
}
}
}
その後、私のコードの一部では、私はこのような何かを持っていることを前提としています
これを行うと、_exampleModelの結果はnullになります。 アイデアおかげさまで
EDIT:
マニッシュの答えによると、私が変更されたすべての私は、属性のすべての種類を通過することを可能にするの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のデザインのグレインに反するもので、おそらくあなたの目標を達成するためのより良い方法があります。 –
ユーザーがdataGridのレコードをダブルクリックすると、そのエンティティのフォームを含む別の状態が自動的に開き、すべてのフィールドにそのレジスタ(dataGridId.selectedItem)が設定されます。しかし、これはオブジェクトであり、これをPHPに送信するときは、フォーム全体をパーソナライズドモデルに「手動で」キャストします。モデルをフォームにバインドすることができれば、すべてのフィールドを1つずつモデル属性を設定する必要はありません。 –