0

チャートをダブルクリックしたときに、dataProvider を変更したい:

  public function myListener(e:ChartItemEvent):void {
    mainDataProvider = e.hitData.item.costsByNature;
    pieSeries.nameField="natureLabel";
    pieSeries.field="amount";
 }

実行すると、エラーが発生します。金額プロパティが ProjectDTO に見つからず、デフォルト値がありません。

以前の dataProvider は、要素の型が ProjectDTO の arrayCollection でしたが、要素の型が CostByNatureDTO の arrayCollection に変更したいと考えています。

CostByNatureDTO はプロパティとして amount を持っています

どうすればそれを解決できますか?

4

1 に答える 1

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」にバインドします。そして、円グラフのリスナーで、dataProvider を切り替えます。

public function myListener(e:ChartItemEvent):void {
    mainDataProvider = e.hitData.item.costsByNature;
 }

幸運を!

于 2012-11-14T18:08:01.327 に答える