似乎無法綁定到自定義組件內的數據。我試過BindUtilis和{},但似乎無法理解它。下面是我得到了什麼:無法綁定到自定義組件的屬性
我有一個已經取得了可綁定類的DataModel
在Mainn.mxml我有兩個組成部分:數據網格(用於測試)& CustomComponent(延伸帆布)
當DataModel.somelist中的數據更新時,DataGrid反映這些更改,但CustomComponent不顯示。
我期待看到跟蹤(CustomComponent.dataProvider)每當this._dataModel.itemList被改變時觸發。我究竟做錯了什麼?
Main.mxml看起來是這樣的:
<mx:Script>
<![CDATA[
import model.DataModel;
[Bindable]
private var _dataModel:DataModel = DataModel.getInstance();
]]>
</mx:Script>
<mx:VBox width="100%" height="100%">
<views:ItemDisplayList width="100%" height="300" id="idl" >
<views:dataProvider>
{this._dataModel.itemList}
</views:dataProvider>
</views:ItemDisplayList>
<mx:DataGrid id="dg" width="100%" height="300" >
<mx:dataProvider>
{this._dataModel.itemList}
</mx:dataProvider>
</mx:DataGrid>
</mx:VBox>
的CustomComponent有這個AS類:
package code{
import model.DataModel;
import mx.containers.Canvas;
public class CustomComponent extends Canvas{
[Bindable]
private var _dataModel:DataModel = DataModel.getInstance();
private var _dataProvider:ArrayCollection ;
public function CustomComponent(){
super();
_dataProvider = new ArrayCollection();
trace("CustomComponent start");
}
public function get dataProvider() : ArrayCollection {
trace("get dataProvider");
return _dataProvider;
}
public function set dataProvider(value: ArrayCollection) : void {
trace("set dataProvider");
this._dataProvider = value;
invalidateProperties();
invalidateSize();
invalidateDisplayList();
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
...
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void{
trace("updateDisplayList");
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
}
}
謝謝蘭斯。我有一種感覺,在某個地方添加了一個監聽器,我想我希望使用Bindable或BindUtils,它可能是自動的。無論如何,我會在這裏跟隨你的建議,看看它帶領我。 – Trist 2010-02-26 11:18:47