我有两个 GWT 模块,它们有自己的入口点 ModuleA 和 ModuleB。我正在使用 Window.assign() 从 ModuleA 移动到 ModuleB。在 ModuleA 中设置了一个变量值。如何从 ModuleB 访问相同的值?
提前致谢。
我有两个 GWT 模块,它们有自己的入口点 ModuleA 和 ModuleB。我正在使用 Window.assign() 从 ModuleA 移动到 ModuleB。在 ModuleA 中设置了一个变量值。如何从 ModuleB 访问相同的值?
提前致谢。
我已经写了几个答案,可以帮助您处理这个问题。
由于您无法在两个编译模块之间共享纯 java:GWT: How to share a java Object (ie: EventBus) between two modules,我建议使用 jsni 导出方法:如何在 GWT 中通信两个模块。但我会使用 gwt-exporter 或 gwt-query 来避免手动编写 js,这通常是错误的来源:Calling GWT Java function from JavaScript
请注意,这些解决方案仅适用于两个模块都加载到同一个 html 中的情况。
如果要将值传递到下载实际值的不同页面,可以将这些值附加到新 url 并在第二个应用程序中读取:
// Module A
Window.Location.assign("module_B.html?msg=whatever");
// Module B
String msg = Window.Location.getParameter("msg");
IMO 最好的方法是在您的主机页面中以纯 JavaScript 实现观察者/可观察模式,并在您的应用程序中使用 JSNI 来注册处理程序/触发事件。