TabNavigator 无法处理 Flex 4.5 中的禁用子级
Posted
技术标签:
【中文标题】TabNavigator 无法处理 Flex 4.5 中的禁用子级【英文标题】:TabNavigator can't handle disabled children in Flex 4.5 【发布时间】:2011-09-10 20:44:57 【问题描述】:我在将 TabNavigator 从 Flex 3 迁移到 Flex 4.5 时遇到了问题。剥离到最低限度,以下代码将产生错误,即无法正确创建 TabNavigator 的第二个子项:
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
>
<fx:Script>
<![CDATA[
protected function over():void
trace('over');
protected function content_one_init():void
content_one.enabled = true;
navigator.selectedIndex = 1;
]]>
</fx:Script>
<mx:TabNavigator
id="navigator"
creationPolicy="auto"
>
<mx:VBox
id="content_one"
enabled="false"
creationComplete="content_one_init()"
label="One"
mouseOver="over()"
/>
<mx:VBox label="Two">
<mx:Label text="Content Two" />
</mx:VBox>
</mx:TabNavigator>
</s:Application>
我在启动时看到的是一个 TabNavigator,它的第二个选项卡被选中,但没有内容,而不是预期的“内容二”标签。 navigator.selectedIndex = 1;
指令只是为了方便起见,如果您在启动后用鼠标选择第二个选项卡,也会出现该错误。
现在有趣的部分来了:如果我执行以下任何操作,就会创建第二个孩子:
在 content_one 上设置creationPolicy="all"
(这是预期的),
评论content_one.enabled = true
,
删除 content_one 上的 enabled="false"
,
从 content_one 中删除 mouseOver="over()"
(这个真的很奇怪,因为无论如何都不会调用处理程序)
这真的是一个 Flex 错误,还是我遗漏了什么?我使用的是 Flex 4.5.0.20967,所有这些都在 Flex 3.5 中运行良好。
谢谢。
【问题讨论】:
在 Adobe 确认为一个错误并提交到他们的bug database @Daniel 您能否将您的评论作为答案发布并接受它,以便该帖子不再属于未答复标签? 【参考方案1】:这已被 Adobe 确认为一个错误,并在其bug database 中提交
【讨论】:
以上是关于TabNavigator 无法处理 Flex 4.5 中的禁用子级的主要内容,如果未能解决你的问题,请参考以下文章