0

下面是一个非常简单的示例,随机点击 step2 按钮,状态会改变,但不会出现 Step 2 面板。

我怀疑由于某种原因没有创建该州的孩子,这就是为什么我将 itemCreationPolicy 设置为“立即”,但这没有区别

这对应用程序来说是灾难性的,因为用户陷入困境并被迫刷新

请问有什么想法吗?

 <s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx" 
                       creationPolicy="all" currentState="step1">   
        <s:states>
            <s:State name="step1"/>
            <s:State name="step2"/>
        </s:states>
        <s:BorderContainer includeIn="step1" itemCreationPolicy="immediate">
            <s:Panel title="Step 1"/>  
        </s:BorderContainer>
        <s:BorderContainer includeIn="step2" itemCreationPolicy="immediate">
            <s:Panel title="Step 2"/>  
        </s:BorderContainer>
        <s:Button title="step1" click="{this.setCurrentState('step1',true)}"/>
        <s:Button title="step2" click="{this.setCurrentState('step2',true)}"/>
    </s:BorderContainer>
4

2 回答 2

1

我刚刚使用 Flex SDK 4.1 对其进行了测试,它可以在不更改创建策略的情况下工作。单击“步骤 2”成功更改状态。

顺便说一句:单击事件处理程序中不需要花括号...

<?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" currentState="step1">

    <s:layout>
        <s:VerticalLayout/>
    </s:layout>

    <s:states>
        <s:State name="step1"/>
        <s:State name="step2"/>
    </s:states>

    <s:BorderContainer includeIn="step1">
        <s:Panel title="Step 1"/>
    </s:BorderContainer>

    <s:BorderContainer includeIn="step2">
        <s:Panel title="Step 2"/>
    </s:BorderContainer>

    <s:Button label="step1" click="setCurrentState('step1', true)"/>
    <s:Button label="step2" click="setCurrentState('step2', true)"/>
</s:Application>
于 2010-11-19T09:09:27.660 回答
1

似乎您使用的是旧版/预发布版的 Flex 4 SDK。更新到 4.1.0(最后一个稳定版本)可能是个好主意。

PS:写作this.setCurrentState('step1',true)不是最好的主意。我建议使用currentState = 'step1'- 这是改变状态的官方方式。

于 2010-11-19T14:15:34.147 回答