0

我们的 Web 应用程序基于 mvp4g 框架。为了解释我的情况,我将使用以下符号:

A, B              - two different gwt modules
presenterA, viewA - presenter and view pair in module A
            viewA contains an iframe and a button along with other UI components
presenterB, viewB - presenter and view pair in module B
eventBusA         - an eventBus in A with event handler in presenterA
eventBusB         - an eventBus in B with event handler in presenterB

应用程序流程从加载A. viewA显示并包含一个按钮和一个 iframe 点击哪个模块B通过调用 URL 加载到 iframe 内,同时隐藏viewA活动查看。因此它仍然在后台活动。是一个单独的模块(和B之间没有子父关系)。它加载并在单击按钮后我想再次进入一个事件,因为我想将状态从隐藏更改为可见。但不能从或访问。ABviewBviewBeventBusAviewAeventBusApresenterBeventBusB

我尝试了以下方法,但没有成功:

  1. 在 eventBusB 中创建和事件以通过 PresenterB 响应 viewB 中的点击。添加了presenterA 作为处理程序。
  2. 在同一事件中添加了 moduleToLoad ,以模块 A 为目标。它要求将 A 声明为子模块。
  3. 考虑使用 GWT-Exporter 项目的 javascript API。
4

1 回答 1

0

您的问题是,模块 B 必须向模块 A 发送推送通知。对此没有现成的解决方案。

最好的解决方案是,发送一个 URL 以再次启动模块 A,并使用 Place 模式来恢复模块 A 的应用程序状态。

因此,模块 A 必须向模块 B 发送令牌(历史令牌)。模块 B 必须保存令牌,如果模块 B 将控制权交还给模块 A,它必须调用模块 A 的 url 并使用令牌作为 # 参数。看看 mvp4g 的历史记录。

于 2013-10-21T14:17:17.227 回答