在GWT应用程序中,我应该使用不同的事件(和事件处理程序)来切换到每个View吗?

时间:2012-11-27 10:55:02

标签: events gwt mvp

我在GWT编写一个菜单,根据点击的条目打开一个View。问题是我有很多不同的观点(~20)。

现在设计是:菜单使用eventBus触发事件,AppController捕获它,将其添加到历史记录并打开正确的Presenter(将其传递给右视图)。

我不确定是否会创建很多事件,如“GoToXXX1”,“GoToXXX2”等,这是正确的方法,我应该使用带参数的单个事件吗?我做错了吗?

2 个答案:

答案 0 :(得分:1)

是的,我不确定这是正确的方法:

我会做以下事情:

  1. 使用键#“-url”创建一个hashmap,如#view1,#page1等,并为视图赋值 HashMap mapView = new hashMap(); 如果你的观点不是复合使用小部件或任何基类。

  2. 在菜单上,使用Anchor类并执行.setHref(“view1”),。setHref(“page1”)等。

  3. 添加History.addValueChangeHandler(yourAppController);

  4. 捕获历史事件时,获取值,然后执行mapView.get(historyEvent);

  5. 绘制您从hashmap获取的视图

答案 1 :(得分:0)

将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