【问题标题】:How to call a mxml component from another mxml component in flex-edited如何在 flex-edited 中从另一个 mxml 组件调用 mxml 组件
【发布时间】:2010-12-08 15:45:12
【问题描述】:

我需要通过单击另一个名为“reviewComponent.mxml”的 mxml 组件中的链接来调用名为“defectTracker.mxml”的组件。我如何做到这一点?

这是我的 reviewComponent.mxml 代码:

 <?xml version="1.0" encoding="utf-8"?> 
 <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
          width="100%" height="100%" 
          horizontalScrollPolicy="off" verticalScrollPolicy="off">

 <mx:Script>
    <![CDATA[


         private function defectTrackerLink(event:Event):void{
                 //call defectTracker
        }
    ]]>
 </mx:Script>

 <mx:LinkButton label="Delete" textDecoration="underline" textRollOverColor="blue"/>
 <mx:LinkButton label="Defect Tracker" textDecoration="underline" textRollOverColor="blue" click="defectTrackerLink(event)"/>

 </mx:VBox>

有人指导我。

Main.mxml:

<mx:Script>
<![CDATA[
  private function subBtnBar(evt:ItemClickEvent):void{
switch (evt.label){
    case "IQA/UAT":
        this.bdyStack.selectedChild = screenIQA;
        break;
    case "EQA":
        Alert.show("Yet To Design");
        break;
    case "Review Tracker":
        this.bdyStack.selectedChild = reviewTracker;
        break;
    case "Defect Tracker":
        this.bdyStack.selectedChild = defectTracker;
        break;                              
    default:
        trace ("Neither a or b was selected")
    } 
}
   ]]>
</mx:Script>
 <mx:ViewStack id="tabView" width="910" creationPolicy="all">
   <mx:ToggleButtonBar horizontalGap="0" id="subTabBar"
      itemClick="subBtnBar(event);" styleName="SubButtonBar"
      hideEffect="{dissolveOut}" showEffect="{dissolveIn}">

     <mx:dataProvider>
     <mx:String>IQA/UAT</mx:String>
     <mx:String>EQA</mx:String>
     <mx:String>Review Tracker</mx:String>
     <mx:String>Defect Tracker</mx:String>
     <mx:String>Defect Configuration</mx:String>
     <mx:String>Defect Export</mx:String>
     <mx:String>Defect Import</mx:String>
</mx:dataProvider>
    </mx:ToggleButtonBar>   
  </mx:ViewStack>

  <mx:ViewStack id="bdyStack" width="910" height="80%">     
        <components:ScrIQA id="screenIQA"
            hideEffect="{dissolveOut}" showEffect="{dissolveIn}"/>
        <components:scrWorkList id="screenWorkList"
            hideEffect="{dissolveOut}" showEffect="{dissolveIn}"/>  
        <components:DefectEntryVerification id="defectEntryVerification" 
            hideEffect="{dissolveOut}" showEffect="{dissolveIn}"
            width="100%" height="100%"/>
        <components:scrDefectResolutionAndCause id="defectResolutionnVerification"
            hideEffect="{dissolveOut}" showEffect="{dissolveIn}"
            width="100%" height="100%"/>
        <components:reviewTracker id="reviewTracker" 
            hideEffect="{dissolveOut}" showEffect="{dissolveIn}"
            width="100%" height="100%"/>
        <components:defectTracker id="defectTracker"
            hideEffect="{dissolveOut}" showEffect="{dissolveIn}"
            width="100%" height="100%"/>
   </mx:ViewStack>   

缺陷跟踪器屏幕已与主 mxml 文件链接。如何调用reviewComponent文件中的函数? reviewComponent 由 2 个链接按钮组成,它是 reviewTracker.mxml 文件数据网格的列条目。因此,当我单击评论组件中的链接时,我希望调用 defectTracker 屏幕。它已经是 main.mxml 文件的子文件了。

我尝试在组件中创建一个主文件的实例,并将选定的子文件更改为缺陷跟踪器,它显示错误提示:

Error #1009: Cannot access a property or method of a null object reference.

我修改的reviewComponent.mxml代码:

 <?xml version="1.0" encoding="utf-8"?> 
 <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
          width="100%" height="100%" 
          horizontalScrollPolicy="off" verticalScrollPolicy="off">

 <mx:Script>
    <![CDATA[


         private function defectTrackerLink(event:Event):void{
                 var main:Main=new Main();
                 main.bdyStack.selectedChild=main.defectTracker;            }
    ]]>
 </mx:Script>

 <mx:LinkButton label="Delete" textDecoration="underline" textRollOverColor="blue"/>
 <mx:LinkButton label="Defect Tracker" textDecoration="underline" textRollOverColor="blue" click="defectTrackerLink(event)"/>

 </mx:VBox>

请有人指导我吗?我应该调用切换按钮栏的项目单击事件函数吗?如果可以怎么办?

【问题讨论】:

    标签: apache-flex components


    【解决方案1】:

    我会使用一个自定义的冒泡事件。您将从 reviewComponent 中分派它,它会被缺陷跟踪器捕获。

    这里有一些很好的文章,告诉你如何创建自定义事件以及如何使用它http://livedocs.adobe.com/flex/3/html/help.html?content=createevents_3.html http://www.connatserdev.com/blog/?p=86

    【讨论】:

    • 您能否对此进行更多解释,如果可能的话,举个例子。由于我是 Flex 新手,所以我不知道大部分概念。
    • 添加了自定义活动文章的链接。这可能比我发布一个例子更好
    【解决方案2】:

    调用是指将其添加到 VBox 中吗?

    var dTracker:DefectTracker = new DefectTracker();
    addChild(dTracker);
    

    【讨论】:

    • 不,应该打开那个 mxml 屏幕。这两个组件已经是 main.mxml 的一部分,它是主应用程序。请参考我的编辑,我已经更新了我的 main.mxml 文件的一部分
    【解决方案3】:

    是否可以通过弹出窗口调用?

     var dTracker:DefectTracker = new DefectTracker();
     PopUpManager.addPopUp(dTracker, this, true);
    

    【讨论】:

    • 不,它不是弹出窗口。它已经是 main.mxml 屏幕的子组件。如果我单击主文件中的“缺陷跟踪器”选项卡,我会显示屏幕。如何通过单击“reviewComponent”文件中的链接来显示此屏幕?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多