好的,Flex中的模塊很流行,但我不知道爲什麼關於Flex模塊的不同用法的文檔和示例如此稀少。Flex模塊和應用程序之間的通信
無論如何,對於這個問題,我將採取經典的員工/部門的例子。我有一個包含mx:TabNavigator的main.mxml。每個選項卡都由s:ModuleLoader加載。
表:員工{EMPID,empName,DEPTID},{部門工作人員DEPTID,DEPTNAME}
的標籤導航器中只包含一個名爲Employee標籤(在我們的例子)。我有一個Employee.mxml模塊。在該模塊中,我有一個填充了員工詳細信息的數據網格。我使用getEmployees($ deptID)函數。您可能會猜到,此功能會返回一組在特定部門工作的員工。
在TabNavigator之外,我有一個departmentDropDownList填充了departments.deptName。
我的目標是加載Employee模塊,當我從DropDownList中選擇一個特定的部門。我有一個可以給我deptID的DropDownList的changeHandler。
protected function departmentDropDownList_changeHandler(event:IndexChangeEvent):void
{
MyDeptID=departmentDropDownList.selectedItem.deptID;
//var ichild:*=employeeModule.child as IModuleInfo;
}
現在,百萬美元的問題是:如何將此deptID傳遞給Employees模塊。後者的優點是調用裝getEmployees的employee_creationCompleteHandler(DEPTID):
protected function EmployeesDg_creationCompleteHandler(event:FlexEvent):void
// I only need to get the deptID from the departmentDropDownList outside the Employee module.
// If I could create a global variable deptID, that would be great!
getEmployeessResult.token=employeeService.getEmployeess(deptID);
}
我試圖使用[綁定]變量,但沒有成功。
我希望你的建議。
一個描述性的和精確的解決方案。 +1 –
非常好的答案,但是,如果您開始使用模塊(通常意味着您的應用程序體系結構變得越來越複雜),我建議您使用應用程序框架來幫助您解決此問題。 [Parsley](http://www.spicefactory.org/parsley/)和[RobotLegs](http://www.robotlegs.org/)是兩個很好的依賴注入框架,可以解決一些問題代碼行。 –
非常感謝!您的輸入是非常有用的。我結合了這個網站的信息:http://www.flex-tutorial.fr/2009/10/16/flex-modules-utiliser-des-interfaces-actionscript-pour-communiquer-avec-lapplication/並且適應了我的項目。 順便說一句,在我的main.mxml中,我不得不在DropDownList的changeHandler函數中使用下面的代碼。這是你怎麼做的嗎?上面的鏈接是舊的,我不確定該方法是用於Flex3還是用於Flex4。 'var ichild:* = employeeModule.child作爲IEmployeeInterface;' – shailenTJ