2011-06-13 67 views
1

我們使用MVP和自定義的EventBus來瀏覽視圖。我們的一個GWT模塊在視圖中加載電子書。我們有一個名爲「展開」的按鈕,點擊後,以擴展模式加載電子書,從而隱藏頁眉,頁腳等。GWT - 通過EventBus連接兩個模塊

讓我們說視圖(UiBinder)的「展開」按鈕命名爲「ShowEbookView 」。點擊「展開」按鈕後,ClickEvent被捕獲並觸發到EventBus。邏輯onExpand(final ExpandEvent expandEvent)寫在同一個「ShowExpandedMod」類中。

一切都沒問題,但我們在擴展模式下有一個名爲「Popout」的按鈕,點擊時應該在NEW頁面中打開電子書!我們需要抽象「ShowExpandedMod」類,以便它可以與EbookId一起使用並可以在新頁面中使用。

我們爲這個新的彈出窗口創建了一個帶有EntryPoint類,HTML頁面和UiBinder頁面的新模塊。我不知道現在如何進行抽象,並使用EventBus跨不同的模塊來加載相同的內容...(與可重用性的課程)

我已經說明了我最好的,但可能不是很清楚!請讓我知道你是否想要更多的細節。

謝謝!

回答

2

當你在瀏覽器中打開一個新窗口時,你基本上會得到一個GWT應用程序的新實例。您不能在不同的瀏覽器窗口中使用EventBus,即跨越不同的GWT模塊實例。

你可以做的是:

  1. 添加的參數來跳隙頁面URL。這很容易通過「歷史令牌」(片段標識符)來完成,像這樣的http://yourdomain.com/popout.html#theIdOfTheDocument。然後,你可以通過History.getToken()

  2. 使用DOM檢索令牌瀏覽器窗口之間進行通信:window.open()在JavaScript中打開一個新窗口,並返回的新窗口,以DOM參考。然後可以訪問新窗口的屬性和功能。這是所有的JavaScript,爲了使這個工作在GWT中,你需要將它包裝在JSNI中。

+0

有道理,謝謝...我怎樣才能在開發模式下工作,無需單獨運行模塊... – Laliluna 2011-06-13 19:35:34

1

嘗試使用MVP4G,在具體的 - 看看他們multi-modules功能(該功能使用GWT的代碼分裂能力)。

這應該使多個EventBus和跨模塊事件觸發器更容易處理。