2011-09-15 7 views
0

재귀 적으로 자체에 대한 참조가있는 데이터보기의 Flex 구성 요소가 있습니다.재귀 Flex보기 구성 요소

예를 들어 Person 유형의 Boss 필드를 참조하는 Employee 클래스가있는 경우 해당 Boss에 대해 동일한 뷰를 중첩하고 싶습니다. 무한 재귀 관계가 아니어야합니다 (예 : 각 객체의 보스 필드 만 볼 수 있습니다).

자체를 참조하는 MXML 구성 요소를 만들려고 시도했지만 잠금을 실행할 때 (재귀 루프가되는 것처럼 보입니다).

includeInLayout 조건처럼 할 수있는 일이있어 구성 요소를 인스턴스화하지 않습니다.

답변

0

일부 코드를 게시하는 것이 도움이됩니다. 내 머리 꼭대기에서 나는 "isChild"라고 불리는 디폴트 값을 갖는 속성을 가지고있을뿐입니다. onChreationComplete 구성 요소는 isChild = false 인 경우에만 자신을 자신에 추가합니다. 그것을 추가 할 때 반드시 isChild = true를 설정해야합니다. 이제 creationComplete가 자식에서 발생하면 다른 레벨을 만들지 않습니다.

0

MXML 구성 요소가 자신의 클래스를 자식으로 사용하는 것을 싫어하지만 내 경험에 제한이 없다는 것을 알게되었습니다.

1

"normal"및 "boss"와 같은 두 가지 상태를 가지며 중첩 된 구성 요소의 includeIn = "normal"을 설정하는 것이 해결책입니다. 기본적으로 itemCreationPolicy는 "지연됨"으로 설정되지만 어쨌든이를 정의 할 수 있습니다. 마지막으로 MXML 선언에서 currentState 속성을 "boss"로 직접 설정할 수 있습니다.

그런 식으로 중첩 된 구성 요소는 현재 구성 요소 상태가 정상일 때만 만들어집니다.

이미 일부 상태가있는 경우 해당 상태를 복제하고 "AndBoss"접미어를 복제본에 추가하고 "normalGroup"및 "bossGroup"이라는 2 개의 상태 그룹을 만들고 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>