当我双击图表时,我想更改dataProvider:
public function myListener(e:ChartItemEvent):void {
mainDataProvider = e.hitData.item.costsByNature;
pieSeries.nameField="natureLabel";
pieSeries.field="amount";
}
当我执行时,我收到一个错误: 在ProjectDTO上找不到amount属性,并且没有默认值。
以前的dataProvider是一个arrayCollection,其元素类型为:ProjectDTO 但我想将其更改为元素类型为CostByNatureDTO的arrayCollection。
CostByNatureDTO将金额作为财产
我该如何解决?
答案 0 :(得分:0)
就个人而言,我会创建一个这两个模型都会实现的接口。例如,
public interface IFooBar {
function get myLabel():String;
function get myAmount():Number;
}
public class CostsByNature implements IFooBar {
//your code here
public var natureLabel:String;
public var amount:String;
public function get myLabel():String {
return this.natureLabel;
}
public function get myAmount():Number {
return this.amount;
}
}
public class ProjectDTO implements IFooBar {
//your code here
public var projectLabel:String;
public var projectAmount:String;
public function get myLabel():String {
return this.projectLabel;
}
public function get myAmount():Number {
return this.projectAmount;
}
}
在饼图中,始终绑定到“myLabel”和“myAmount”。在饼图的监听器中,在dataProviders之间切换。
public function myListener(e:ChartItemEvent):void {
mainDataProvider = e.hitData.item.costsByNature;
}
祝你好运!