3

在我的应用程序中,我有一个相对复杂的活动/地点。在活动开始时解析状态(从历史令牌到模型)会导致一些服务器交互。在用户交互时,活动只更新模型的必要部分,因此可以保护一些服务器交互 - 活动/模型具有内部状态。

有没有办法在不(重新)启动活动的情况下反映浏览器历史记录中的状态?(History.newItem(token)也导致活动开始)

更新 克里斯的解决方案“几乎”有效,但出现了另一个问题:在我的用户界面中,我有一个重置按钮(指向带有空令牌的地方的链接)。如果我在 ui 周围单击,则令牌会很好地更新,但现在重置按钮不起作用。gwt 认为它在同一个地方,所以它忽略了重置点击。在此之前,问题几乎相同:令牌和位置没有改变,因此重置按钮也不起作用。GWT 将此记录为“要求返回同一个地方”

那么有没有办法让 gwt 重新启动活动而不管位置等价性如何?

4

2 回答 2

3

去一个新的地方,但让你ActivityMapper返回相同的活动实例。这样,活动就不会重新启动。
当地点从其他方式发生变化时(例如浏览器历史记录),您必须找到更新活动的方式。例如,请参阅GWT MVP 在 Place change 上更新 Activity 状态

于 2012-08-23T11:46:49.243 回答
2

有一个半解决方案,虽然我不想推荐它,但我想在这里添加它 - 只是为了警告这个解决方案的缺点:

您可以通过调用将令牌添加到历史记录而不触发事件History.newItem(token, false)

这是一个半解决方案,因为:

  • 它可以正常工作(只要您正确构建令牌)。
  • 部分性能问题也得到了解决:将令牌添加到历史记录时不会重新启动活动。
  • 但是,如果用户在历史记录中前后移动,性能问题仍然存在(因为那时,事件将再次被触发)。
于 2012-08-23T12:02:21.217 回答