我正在 GWT 中编写一个菜单,该菜单根据单击的条目打开一个视图。问题是我有很多不同的观点(~20)。
现在的设计是:菜单使用 eventBus 触发一个事件,AppController 捕获它,将它添加到 History 并打开正确的 Presenter(传递给它正确的 View)。
我不确定创建很多事件,如 "GoToXXX1" 、 "GoToXXX2" 等是正确的方法,我应该使用带有参数的单个事件吗?我做错了吗?
是的,我不太确定这是正确的方法:
我会做以下事情:
使用键“#-url”创建一个哈希图,如#view1、#page1 等,并为视图赋值 HashMap mapView = new hashMap(); 如果您的视图不是 Composite 使用 Widget 或任何基类。
在菜单上,使用 Anchor 类并执行 .setHref("view1")、.setHref("page1") 等。
添加一个 History.addValueChangeHandler(yourAppController);
当您捕获历史事件时,获取值然后执行 mapView.get(historyEvent);
将 iframe 嵌入 html 后,您可以使用History.newItem()
and :History.addValueChangeHandler()
<iframe src="javascript:''"
id="__gwt_historyFrame"
style="width:0;height:0;border:0"></iframe>
https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsHistory