2011-09-15 31 views
0

私は、再帰的に自身への参照を持つデータオブジェクトのビューであるFlexコンポーネントを持っています。再帰的なFlex Viewコンポーネント

たとえば、Person型のボスフィールドを参照するEmployeeクラスがある場合、そのボスに対して同じビューをネストしたいと思います。これは、無限の再帰的関係であってはなりません(例えば、私は各オブジェクトのボスフィールドを見るだけです)。

自分自身を参照するMXMLコンポーネントを作成しようとしましたが、実行時にロックされます(再帰的ループになるようです)。

includeInLayout条件のように、そのコンポーネントをインスタンス化しないようにすることができますか。

答えて

0

コードを投稿すると便利です。私の頭の上から私はちょうど "isChild"と呼ばれるデフォルトのfalseを持つプロパティを持っていました。コンポーネントonCreationCompleteは、isChild = falseの場合にのみ、自分自身を追加します。それを追加するときは必ずisChild = trueを設定します。これで、creationCompleteが子プロセスで発生すると、別のレベルは作成されません。

0

私は、MXMLコンポーネントが独自のクラスを子として持ちたくないことを知りましたが、私の経験ではASにそのような制限はありません。

1

"normal"と "boss"の2つの状態を持ち、ネストされたコンポーネントにincludeIn = "normal"を設定することもできます。デフォルトでitemCreationPolicyは "deferred"に設定されますが、必ずそれを定義して確実に確認することができます。最終的に、MXML宣言でcurrentStateプロパティを "boss"に直接設定することができます。

このようにして、ネストされたコンポーネントは、現在のコンポーネントの状態が正常な場合にのみ作成されます。

すでに状態がある場合は、それらの状態を複製し、 "AndBoss"サフィックスを複製に追加し、2つの状態グループ "normalGroup"と "bossGroup"を作成し、includeIn = "normalGroup"あなたのコンポーネントに。

<!--MyComponent--> 
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" > 
    <s:states> 
     <s:State name="normal"/> 
     <s:State name="boss"/> 
    </s:states> 
    <component:MyComponent includeIn="normal" 
          currentState="boss" 
          itemCreationPolicy="diferred"/> 
</s:Group>