Рекурсивный Flex View Компонент - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть компонент Flex, который является представлением объекта данных, который рекурсивно имеет ссылку на себя.

Например, если у вас есть класс Employee, который ссылается на поле босса типа Person, я быхотел бы использовать тот же вид для этого босса.Это не должно быть бесконечное рекурсивное отношение (например, я бы только просматривал поле босса каждого объекта).

Я пытался создать компонент MXML, который ссылается на себя, но при запуске он блокируется (похоже, что он попадает в рекурсивный цикл).

Есть ли что-нибудь, что вы можете сделать, например условия includeInLayout, которые гарантируют, что он даже не создаст экземпляр этого компонента.

Ответы [ 3 ]

1 голос
/ 15 сентября 2011

Другое решение состоит в том, чтобы иметь два состояния, таких как «нормальный» и «начальник», и установить includeIn = «нормальный» для вашего вложенного компонента. По умолчанию itemCreationPolicy будет иметь значение «deferred», но вы можете определить его в любом случае, чтобы быть уверенным. Наконец, вы можете установить для свойства currentState значение «boss» непосредственно в объявлении MXML.

Таким образом, вложенный компонент будет создаваться только тогда, когда текущее состояние компонента нормальное.

Обратите внимание, что если у вас уже есть некоторые состояния, вам придется дублировать эти состояния и добавить суффикс "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>
0 голосов
/ 15 сентября 2011

Я обнаружил, что компоненты MXML не любят брать свой собственный класс в качестве ребенка, но мой опыт показывает, что AS не имеет такого ограничения.

0 голосов
/ 15 сентября 2011

Размещение некоторого кода было бы полезно.Вдобавок ко всему, у меня просто есть свойство, которое по умолчанию имеет значение false, называемое isChild.Компонент onCreationComplete добавляет себя к себе, только если isChild = false.При добавлении он обязательно устанавливает isChild = true.Теперь, когда creationComplete происходит на дочернем элементе, он не будет создавать другой уровень.

...