ObjectProxyでBindingのwarningを消す
データサービスなんかで拾ってきたデータに削除フラグのプロパティをつけたりしたいがために、
データグリッドなどで、Bindingする項目をObjectで作成することってよくありますよね。
list = new ArrayCollection(); for each(var row:FxDsInfoBean in e.result){ var item:Object = { dsNo:row.dsNo, dsName:row.dsName, template:row.template, delFlg:false, rawData:row }; list.addItem(item); } grid.dataProvider = list;
でも、これだと、各プロパティがBindableじゃないので、実行するとwarningが出ます。
マニュアルをみても「重要ではありません」などと書いてあって、釈然としない…。
かといって、ちゃんとBindableなクラスとして定義するのもアホらしい。
配列データじゃなければModelタグで定義しちゃう手もあるけど…。
そんなときは、何も考えずにObjectProxyでラップしちゃいましょう。
list = new ArrayCollection(); for each(var row:FxDsInfoBean in e.result){ var item:ObjectProxy = new ObjectProxy({ dsNo:row.dsNo, dsName:row.dsName, template:row.template, delFlg:false, rawData:row }); list.addItem(item); } grid.dataProvider = list;
ラップされたオブジェクト内のすべてのプロパティについてpropertyChangeイベントを出すようにしてくれるので、結果としてBindableになります。
もっと早くに知っておけば、前の仕事のコード量がかなり減ったのに…orz