1

在我的主应用程序 mxml 中,我使用的是选项卡导航器,我可以通过以下代码在应用程序的任何位置访问该选项卡导航器。

mx.core.FlexGlobals.topLevelApplication.menuOption.selectedIndex=0;

现在我的问题是我在transactionUI中使用了一个切换按钮栏, 它是选项卡导航器的子元素,我如何像上面提到的代码一样访问该元素?

我的主要 mxml 选项卡导航器 ::

<mx:TabNavigator   left="10" top="20" bottom="10" right="10" id="menuOption" >

    <ui1:homeUI label="Home" width="100%" height="100%" backgroundColor="#373737" chromeColor="#181818" contentBackgroundColor="#181818" color="#FDFDFD" /> 

    <ui1:transactionUI label="Transaction" width="100%" height="100%" backgroundColor="#373737"  />     

        <ui1:calanderUI label="Employee service" width="100%" height="100%"  horizontalCenter="0"  backgroundColor="#373737" chromeColor="#181818" contentBackgroundColor="#181818" color="#FDFDFD" />
        <ui1:ManagementUI label="Management" width="100%" height="100%" backgroundColor="#373737" chromeColor="#181818" contentBackgroundColor="#181818" color="#FDFDFD" />
        <ui1:reportUI label="Reports" width="100%" height="100%" backgroundColor="#373737" chromeColor="#181818" contentBackgroundColor="#181818" color="#FDFDFD" />

        <ui1:admin label="Admin" width="100%" height="100%" backgroundColor="#373737" chromeColor="#181818" contentBackgroundColor="#181818" color="#FDFDFD" />

    </mx:TabNavigator>

我在 transactionUI 中的切换栏::

<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%"
                xmlns:ui="com.colan.*" xmlns:ui1="com.colan.ui.*"
                backgroundColor="#373737" chromeColor="#181818" 
                contentBackgroundColor="#181818" color="#FDFDFD">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[

        import mx.collections.*;
        import mx.core.*;
    ]]>
</fx:Script>
<mx:VBox horizontalAlign="center"  verticalAlign="middle" width="100%"  height="100%">

    <mx:HBox horizontalAlign="center"  verticalAlign="middle" width="100%"  height="15%" >

        <mx:ToggleButtonBar id="toggleButtonBar"
                            dataProvider="{viewStack}"    
                            selectedButtonTextStyleName="mySelectedButtonTextStyleName"
                            />


    </mx:HBox>
    <mx:HBox horizontalAlign="center"  verticalAlign="middle" width="100%"  height="85%" >


        <mx:ViewStack id="viewStack"                 
                      visible="{toggleButtonBar.selectedIndex > -1}" width="100%"  height="100%" >

            <ui1:transaction label="Transaction"/>
            <ui1:addClient label="Add  Client"/>
            <ui1:invoice label="Make invoice"/>
            <ui1:workCatalogue label="Work catalogue"/>
            <ui1:productCataloge label="Products Categories"/>

            <ui1:suppliers label="Offers"/>
            <ui1:calendarPlanUI label="Calendar"/>


        </mx:ViewStack>
    </mx:HBox>
</mx:VBox>

请给我建议...

4

1 回答 1

1

FlexGlobals.topLevelApplication 旨在从其任何子屏幕访问主应用程序屏幕中的公共变量/函数。

例如.. 如果“transactionUI”NavigatorContent 的 ToggleButtonBar“calendarPlanUI”用于迁移到主应用程序“calanderUI”NavigatorContent。然后您可以立即提及它,就像

<ui1:calendarPlanUI label="Calendar" click="mx.core.FlexGlobals.topLevelApplication.menuOption.selectedIndex = '2'"/>

但是,如果您有任何机会尝试这样的 toggleButtonBar

mx.core.FlexGlobals.topLevelApplication.toggleButtonBar.selectedIndex = 1;

那么我想提一下,主应用程序的变量/函数/组件只能使用“topLevelApplication”访问。如果不创建 transactionUI 实例,您将无法在其他子屏幕/主应用程序中使用 toggleButtonBar。

于 2012-12-20T10:56:07.933 回答