Apache flex 递归Flex视图组件
我有一个Flex组件,它是一个递归地引用自身的数据对象视图 例如,如果有一个引用Person类型的boss字段的Employee类,我希望为该boss嵌套相同的视图。这不应该是无限递归关系(例如,我只查看每个对象的boss字段) 我曾尝试创建一个引用自身的MXML组件,但当我运行它时,它会被锁定(似乎它进入了一个递归循环)Apache flex 递归Flex视图组件,apache-flex,actionscript-3,flex4,Apache Flex,Actionscript 3,Flex4,我有一个Flex组件,它是一个递归地引用自身的数据对象视图 例如,如果有一个引用Person类型的boss字段的Employee类,我希望为该boss嵌套相同的视图。这不应该是无限递归关系(例如,我只查看每个对象的boss字段) 我曾尝试创建一个引用自身的MXML组件,但当我运行它时,它会被锁定(似乎它进入了一个递归循环) 您是否可以执行任何操作,例如includeInLayout条件,以确保它甚至不会实例化该组件。发布一些代码会很有帮助。在我的脑海中,我只会有一个默认为false的属性,名为“
您是否可以执行任何操作,例如includeInLayout条件,以确保它甚至不会实例化该组件。发布一些代码会很有帮助。在我的脑海中,我只会有一个默认为false的属性,名为“isChild”。组件onCreationComplete仅在isChild=false时才会将自身添加到自身中。添加时,它确保将isChild设置为true。现在,当creationComplete发生在子级上时,它不会创建另一个级别。我发现MXML组件不喜欢将自己的类作为子级,但我的经验是as没有这种限制。另一种解决方案是有两种状态,如“正常”和“boss”以及set includeIn=“正常”用于嵌套组件。默认情况下,itemCreationPolicy将设置为“deferred”,但您可以通过任何方式定义它以确保安全。最后,您可以在MXML声明中直接将currentState属性设置为“boss”
<!--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>
这样,只有当当前组件状态为正常时,才会创建嵌套组件
请注意,如果您已经有一些状态,则必须复制这些状态,并在副本中添加“AndBoss”后缀,创建两个状态组,“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>