我采取某种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