【发布时间】:2011-01-10 21:45:42
【问题描述】:
我正在实现某种组合框控件(通过扩展 spark.components.supportClasses.DropDownListBase)
现在,在这个控件中;我需要知道:
- 如果数据提供者被更改/分配。 (我可以做到……下面的第一种方法有效);
- 如果数据提供者集合中的任何项目发生了变化。
我尝试了两种方法都没有成功...
第一种方法:
[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
}
有什么想法吗?
更新:上面已编辑。第一种方法让我知道数据提供者是否已更改,但如果数据提供者集合中的任何项目已更新,则不会。第二种方法根本不起作用..
【问题讨论】:
标签: actionscript-3 apache-flex dataprovider