我正在实现某种组合框控件(通过扩展spark.components.supportClasses.DropDownListBase
)
现在,在这个控件里面;我需要知道:
- 如果数据提供者被更改/分配。(我可以做到……下面的第一种方法有效);
- 如果dataprovider 集合中的任何项目已更改。
我尝试了两种方法都没有成功...
第一种方法:
[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
}
第二种方法:
因为这是基于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
}
有任何想法吗?
更新:上面已编辑。第一种方法让我知道数据提供者是否已更改,但如果数据提供者集合中的任何项目已更新,则不会。第二种方法根本不起作用..