如何在 flex-edited 中从另一个 mxml 组件调用 mxml 组件
Posted
技术标签:
【中文标题】如何在 flex-edited 中从另一个 mxml 组件调用 mxml 组件【英文标题】:How to call a mxml component from another mxml component in flex-edited 【发布时间】: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"
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" 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" >
<components:ScrIQA id="screenIQA"
hideEffect="dissolveOut" showEffect="dissolveIn"/>
<components:scrWorkList id="screenWorkList"
hideEffect="dissolveOut" showEffect="dissolveIn"/>
<components:DefectEntryVerification id="defectEntryVerification"
hideEffect="dissolveOut" showEffect="dissolveIn"
/>
<components:scrDefectResolutionAndCause id="defectResolutionnVerification"
hideEffect="dissolveOut" showEffect="dissolveIn"
/>
<components:reviewTracker id="reviewTracker"
hideEffect="dissolveOut" showEffect="dissolveIn"
/>
<components:defectTracker id="defectTracker"
hideEffect="dissolveOut" showEffect="dissolveIn"
/>
</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"
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>
请有人指导我吗?我应该调用切换按钮栏的项目单击事件函数吗?如果可以怎么办?
【问题讨论】:
【参考方案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”文件中的链接来显示此屏幕?以上是关于如何在 flex-edited 中从另一个 mxml 组件调用 mxml 组件的主要内容,如果未能解决你的问题,请参考以下文章