我正在 GWT 中编写一个菜单,该菜单根据单击的条目打开一个视图。问题是我有很多不同的观点(~20)。
现在的设计是:菜单使用 eventBus 触发一个事件,AppController 捕获它,将其添加到历史记录中并打开正确的演示器(传递正确的视图)。
我不确定创建很多事件(如"GoToXXX1"、"GoToXXX2"等)是正确的方法,我应该使用带有参数的单个事件吗?我做错了吗?
是的,我不确定这是正确的方法:
我会做以下几点:
-
使用键"#-url"创建哈希映射,如 #view1、#page1 等,并评估视图HashMap mapView = new hashMap();如果您的视图不是复合视图,请使用 Widget 或任何基类。
-
在菜单上,使用 Anchor 类并执行 .setHref("view1")、.setHref("page1")等。
-
添加 History.addValueChangeHandler(yourAppController);
-
捕获历史记录事件时,获取值,然后执行 mapView.get(historyEvent);
- 绘制从哈希图获得的视图
iframe 嵌入到 html 后,您可以使用 History.newItem()
和 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