2012-12-10 101 views
1

在我的主應用程序MXML我使用一個標籤導航標籤導航,我可以用下面的代碼在任何地方訪問該選項卡瀏覽器在應用..訪問的子元素

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

現在我的問題是我IHAVE使用切換按鈕欄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> 

請諮詢我我的肘杆...

+1

你們是不是全局訪問的標籤導航的孩子或你想從孩子訪問的標籤導航?你的頭銜說了一件事,但你的帖子說另一件事。再說一句建議,如果你用全局變量來處理所有事情,你的代碼將非常快速地變得非常難以管理。您真的應該考慮爲應用程序的不同部分添加某種數據模型或框架以進行通信。 – Osman

+1

你不應該。查看MVC框架並選擇一個。試圖訪問另一個視圖最終會導致以後休息。 OOP試圖用像MVC這樣的設計模式來防止這種情況。 –

回答

1

F lexGlobals.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。