我正在使用GWT編寫Web應用程序,並且在GWT網站上使用MVP tutorial(即使用History
進行導航)。GWT MVP導航邊欄
我有點困惑,具有導航側邊欄的最好的方法(即點擊導航鏈接改變主窗口中的內容。見下文)
我看到的--------------------
| | |
| nav | main |
| | window |
| | |
| | |
--------------------
一個潛在的方法這樣做是爲了在導航和內容的HTML中聲明兩個<div>
標記。例如:
@Override
public void onValueChange(ValueChangeEvent<String> event) {
...
if (token.equals("navigation")) {
presenter = new NavigationPresenter(rpcService, eventBus, new NavigationView());
presenter.go(RootPanel.get("navigation"));
}
...
if (token.equals("content")) {
presenter = new ContentPresenter(rpcService, eventBus, new ContentView());
presenter.go(RootPanel.get("content"));
}
...
}
我不確定這是否是解決此問題的最佳方法。 (我猜導航面板和內容窗口之間的雙向通信可以通過EventBus
來完成?當涉及到更改UI(例如移動站點)時,此方法是否靈活)
我想知道人們會建議是解決這個問題的最好方法。我已閱讀各地,通常落在約Activities and Places討論,但據我所知,這些都是MVP的架構有所不同(活動和地點是browser history management有用的,但我認爲我使用的History
覆蓋了(?))
任何建議,將不勝感激。
首先@Andrea Boscolo絕對是正確的:我研究了我的謙虛大腦可能想出的各個角度下的歷史管理,而Acitivities&Places是實現歷史製圖而不重新發明輪子的最佳方式。 – 2013-03-26 20:18:41
它唯一的缺點是通過PlaceHistoryMapper @WithTokenizers生成方式標記:URL很醜陋IMO,地點前綴由「:」分隔,然後是參數。 我已經實現「自我符號化」的地方,所產生像URL:「www.myapp.com/#/placeprefix/param1=value1¶m2=value2 而不是GWT的標準:www.myapp.com/#placeprefix:anythingelseinthetoken ...這只是因爲我是一個網址瘋子可能 – 2013-03-26 20:33:46