私はある種のコンボボックスコントロールを実装しています(を拡張することによりspark.components.supportClasses.DropDownListBase)
さて、このコントロールの中。私は知る必要がある:
- データプロバイダーが変更/割り当てられた場合。(私ができる...以下の最初のアプローチが機能します);
- dataprovider コレクション内のアイテムが変更された場合。
私はトリックをしなかった2つの方法を試しました...
最初のアプローチ:
[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
}
2 番目のアプローチ:
これはに基づいているため、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
}
何か案は?
更新:上記で編集..最初のアプローチでは、データプロバイダーが変更されたかどうかを知ることができますが、データプロバイダーコレクションでアイテムが更新されたかどうかはわかりません。2番目のアプローチはまったく機能しません..