2009-06-17 12 views
1

フレックス3では、私は階層的なデータ構造を持っています。私はその内容をツリーに表示したいと思います。私の問題は、子ノードから計算されたノードがあることです。子ノードのデータが変更された場合、それらの親ノードに自動的に変更を加えるように階層を構造化する方法 例:階層データ構造の子フィールドから計算された親データ

  • すべてのノードに警告フラグがあります。子警告フラグの一部がtrueに変更された場合、親警告フラグは自動的にtrueに変更されます。
  • ノード整数フィールドは子整数フィールドの合計です。子のいずれかが変更された場合、親整数フィールドは合計を直ちに「計算」します。

自動的に構造変更が行われるか、カスタム機能が必要なのでしょうか?

ありがとうございます!

答えて

0

私たちは、このパターンに従うことによって、次の操作を行います。

  1. は、親クラスの値を算出する方法を作成し、イベントとそれをバインド可能にします。
  2. 親で、子コレクションが変更されたときのイベントリスナーを追加します。これを行うには、子コレクションはArrayCollectionなどでなければなりません。
  3. 変更イベントをインターセプトすると、これは、親の集計プロパティを見ています任意のUIを起こす必要があります。1.

ステップで説明した方法のためのバインド可能なメタデータに添付イベントを上げる(または条件上げます)子供が更新されるたびに更新される。

public class Parent 
{ 
    private var children:ArrayCollection = new ArrayCollection(); 

    public function Parent() 
    { 
     children.addEventListener(
      CollectionEvent.COLLECTION_CHANGE, 
      function(evt:CollectionEvent):void 
      { 
       if (...) 
       { 
        dispatchEvent(new Event("warningStateChanged")); 
       } 
      } 
     ); 
    } 

    [Bindable("warningStateChanged")] 
    public function containsWarnings():Boolean 
    { 
     for each (var child:Child in children) 
     { 
      if (child.hasWarning) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 
} 
+0

本当に感謝:

は、ここでの例です。 私は、子ノードのコレクション変更イベントのリスナーでカスタムノード型を作成するソリューションにもなりました。 – spupek

関連する問題