2010-03-09 24 views
0

我使用一個Adobe Flex項目的MVC MATE。在我們的一個頁面上,我們有一個對話窗口,顯示給用戶顯示來自RPC的信息。該對話框彈出的頁面與所顯示的數據無關,因此這是一個單獨的模型。如何創建一個MATE映射文件來創建對話框窗口,使其對用戶可見,然後從模型中注入數據?Flex的伴侶,如何備份彈出(對話)與模型

感謝您的閱讀。

回答

2

好像你找到了一個辦法,但如果你有興趣的另一個想法,有關於如何在擇偶接近彈出窗口的伴侶論壇一個很好的線索。它包括一些示例代碼,並討論所涉及的最佳實踐,以及爲什麼某些選擇正在作出:

Converting app with popups to Mate << Mate Forums

如果我理解正確的話,這裏是一些代碼,你需要什麼(改編自該線程)。它注入RPC調用到視圖的結果(保持地圖不可知怎麼視圖顯示的數據),視圖將創建一個彈出每當有數據,並刪除彈出時沒有數據。該線程進一步解釋了大部分代碼。

EventMap:

<Injectors target="{PopupParentView}"> 
    <PropertyInjector destinationKey="rpcData" 
         source="{FooManager}" sourceKey="rpcData" /> 
</Injectors> 

PopupParentView: ...

private var popup : UIComponent; 

private var rpcData : Object; 

private function onPreinitialize(event : Event) : void { 
    BindingUtils.bindSetter(rpcDataChanged, this, "rpcData"); 
} 

private function rpcDataChanged(value : Object) : void { 
    invalidateProperties(); 
} 

override protected function commitProperties() : void { 
    // two mutually exclusive branches: either the property can be interpreted as "show the popup" 
    // and the popup doesn't exist, or we shouldn't show the popup, but it does exist. all other 
    if (rpcData != null && popup == null) { 
     popup = PopUpManager.createPopUp(...); 
    } else if (rpcData == null && popup != null) { 
     // make sure to set the popup property to null 
      PopUpManager.removePopUp(popup); 
      popup = null; 
    } 
} 
</Script> 
... 
+0

+1不是一個答案,但一個很好的起點。謝謝! – davidemm 2010-05-27 20:40:41

+0

是的好點 - 我從線程中拉出了一些代碼(改編爲我之前使用的代碼)。讓我知道這是否有幫助。 – Brian 2010-05-28 14:46:33

+0

感謝Brian的幫助!我創建了一個沒有從任何可視組件繼承的純ActionScript類,它的唯一目的是按照您在答案中描述的方式處理popUpManager。如果另外一個人採取了這種辦法,確保在MATE,你趕上FlexEvent.INITIALIZE事件和處理程序中,使用MATE ObjectBuilder的標籤實例創建,因爲它不會自動爲部分中創建的對象的實例的看法。 – davidemm 2010-06-04 18:39:17