我採取某種ComboBox控件(通過擴展spark.components.supportClasses.DropDownListBase
)現在AS3:如何知道,如果數據提供程序或內容(S)爲改變
,此控件;我需要知道:
- 如果數據提供者被更改/分配。 (我可以做...下面的第一種方法);
- if dataprovider集合中的任何項目已更改。
我試過2種方法是沒有這樣的伎倆......
1ST做法:
[Bindable("collectionChange")]
override public function set dataProvider(value:IList):void
{
if (value) value.addEventListener(CollectionEvent.COLLECTION_CHANGE, onDataChange);
super.dataProvider = value;
trace("DATA CHANGED"); //fires
}
protected function onDataChange(event:CollectionEvent):void
{
trace("COLLECTION ITEM(S) CHANGED"); //does not fire
}
2ND做法:
由於這是基於DropDownListBase
;它應該已經發送CollectionEvent.COLLECTION_CHANGE
事件..?
public function myClass() //constructor
{
addEventListener(CollectionEvent.COLLECTION_CHANGE, onDataChange);
}
protected function onDataChange(event:CollectionEvent):void
{
trace("DATA CHANGED"); //does not fire
}
任何想法?
更新:上面編輯..第一種方法讓我知道,如果數據提供者被更改,但不是如果在dataprovider集合中更新任何項目。第二種方法根本不起作用。
myClassInstance.dataprovider = someArrCollection; //這工作..但myClassInstance.dataprovider [0] .name =「john」; //不會觸發collectionChange事件。有沒有辦法知道收藏品的屬性何時發生變化?所以我可以更新我的組合列表標籤.. – 2011-01-10 22:22:55