2013-01-17 49 views
0

我正在學習pureMVC並試圖將框架實現爲我的應用程序之一。我有follwing情況:Flex PureMVC:在以下情況下,代理能否保持View組件的引用?

我的主要應用有一個用來增添別樣的自定義組件的畫布。其中一個自定義組件是「搜索組件」(多個實例在頁面上創建)。我的搜索組件具有textfiled和搜索按鈕,在下面的步驟開始搜索:

1,點擊搜索按鈕分派自定義事件,該自定義事件不斷搜索組件的參考作爲屬性。

2,我AppMediator監聽自定義事件,並與搜索文本相處當前搜索組件的參考。

3-中介發送通知(sentNotification(AppConstants.SEARCH_CLICKED,組分))。

4 - 我已經通過SEARCH_CLICKED通知註冊了一個命令。

5-Command檢索WebserviceProxy並調用其搜索(文本)方法。遠程web服務

6 WebserviceProxy會談,並使用標記的AsyncToken才能得到結果。

我的問題是: 我的命令有參考自定義搜索組件,當它開始搜索,但搜索Web服務需要一些時間和得到的結果。我如何將結果處理回到啓動搜索的自定義搜索組件。因爲我有多個搜索組件實例。什麼是保持該組件引用的最佳位置,我應該在WebserviceProxy中添加一個變量來保留該引用並將結果交給它,否則我必須創建一個全局代理來保持對這些組件的引用?

謝謝

回答

0

基於安東的回答,我重新思考並試圖分離依賴。因此,我試圖通過向Mediator的構造函數提供不同的ID來分別用「SearchMediator」調解Search Widget的每個實例。現在,當搜索小部件引入新的搜索時,中介調用Command,Command調用代理的方法來執行實際搜索並從DB獲取結果併發送通知。 SearchMediator會關注該通知並將結果移交給適當的用戶界面。

1

我一直在使用PureMVC一些年,我喜歡它!

我認爲你還沒有理解主要組件的角色和協作。

  1. 您不應該在命令和UI元素之間有任何依賴關係。您的介體必須從UI組件獲取具體的值,並通過通知發送。在這種情況下,命令和代理服務器只會獲得一個文本值,不管它的來源是什麼!假設您在一段時間後將更改UI,並且您將在用戶端擁有其他組件以確定搜索值。在你的情況下,你將不得不改變代理和命令。這會很糟糕。

  2. 代理可能不具備有關的命令和調解員的任何信息。它只能提供其功能,讓其他組件與其進行交互,並在獲取它之後發送具有新信息的通知,而不知道其中有哪些人感興趣。

再次閱讀框架的描述並寫下您的問題。 我也有一些理解這些東西的問題,我看到你的問題。

+0

感謝您的回覆,您已經非常清楚地闡述了角色,這讓我想到了分離命令和UI元素之間的依賴關係。 – user1858886

相關問題