2012-02-15 66 views
0

在項目中我使用MVP模式。我有2個視圖和2個相應的演示者。從「Presenter2」我想在「View1」中獲得選定的值。什麼是最好的方式來做到這一點?我知道使用事件總線更好。所以new selectedValueEvent(value)到notificate Presenter2關於選擇的值:但是,所以我一定要創建2個事件和2個事件處理程序(第1事件將上升時Presenter2需要從View1選擇的值,它會在Presenter1.第2事件處理將在Presenter1(如上升。 Presenter2將處理selectedValueEvent(value),並得到value)。GWT MVP。如何使用事件總線?

回答

1

如果當主持人需要得到當用戶進行操作時,您將無法得到解決使用事件選擇的值是該點。(Altough,也許這兩個主持人反應過來到相同的事件,所以不需要使用兩個不同的?)

如果知道演示者何時需要獲取值(工作中定義的步驟在演示

public class ClientFactoryImpl implements ClientFactory { 
    private static final EventBus eventBus = new SimpleEventBus(); 
    /* The views */ 
    private static final SampleView sampleView = new SampleView(); 
    .... 

    public ClientFactoryImpl(){ 
     eventBus.addHandler(ReleaseAddedEvent.type, sampleView); 
     .... 
    } 


    // getter and setters 
} 

這樣你就可以獲取到視圖的引用:流動),你可以把它像這樣:

保持在ClientFactory的意見參考SampleView view = MyEntryPoint.getClientFactory().getSampleView();然後你可以從視圖中調用返回選定值的方法。

+0

是的,在我的應用程序中,我使用clientFactory。現在它工作如何你寫(獲取另一個(不對應於這個主持人)視圖和調用此View getSelected()方法)..但我認爲在Presenter創建參考不相應視圖不是好主意..或者不是? – MyTitle 2012-02-15 10:46:52

+0

如果您只是在演示者的方法中創建本地引用,它不應該是一個問題,因爲只要執行此方法,本地引用就存在。 – steffinchen 2012-02-15 11:35:54

+0

是的,我創建了本地變量)好吧,謝謝))) – MyTitle 2012-02-15 13:19:00