【发布时间】:2013-12-09 08:44:59
【问题描述】:
是否可以在弹性图表的数据提供者发生变化时触发?有什么想法吗? 我使用了oncreation complete,但是动态更改图表的数据源时它不起作用。
【问题讨论】:
标签: actionscript-3 apache-flex flex4 flex3 flex4.5
是否可以在弹性图表的数据提供者发生变化时触发?有什么想法吗? 我使用了oncreation complete,但是动态更改图表的数据源时它不起作用。
【问题讨论】:
标签: actionscript-3 apache-flex flex4 flex3 flex4.5
试试 Changewatcher 类。
import mx.binding.utils.ChangeWatcher;
import mx.events.PropertyChangeEvent;
ChangeWatcher.watch(this, "dataProvider", watchHandler);
private function watchHandler(e:PropertyChangeEvent):void
{
// Do Something
}
否则试试这个, 将集合更改侦听器添加到图表本身,如下所示。
chart.addEventListener(CollectionEvent.COLLECTION_CHANGE, onChartDataProviderChange);
private function onChartDataProviderChange(e:CollectionEvent):void
{
// Do Something
}
if(condition1){
chart.dataprovider=provider1;
}
if(condition2){
chart.dataprovider=provider2;
}
希望对你有帮助。
【讨论】:
如果dataProvider 是ArrayCollection,您可以将侦听器添加到 dataProvider 对象集合本身:
dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE,listernerFunction);
请注意,如果您将整个 dataProvider 对象替换为例如代码
dataProvider = null;
dataProvider = new ArrayCollection();
你不会触发事件,你必须为新对象添加一个新的监听器。
否则,您可以将侦听器添加到图表本身,该侦听器将在每次替换数据提供者对象时触发,但在集合本身更改时不会触发。
chart.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,funct);
[..]
protected function funct( event:PropertyChangeEvent):void{
if(event.property=="dataProvider"){
//Your code
}
}
【讨论】: