“核心”是指加载的应用程序的初始部分。
为了将 url 绑定到地点,GWT 使用
PlaceTokenizer<P extends Place>
. 从 url 加载应用程序时,它会调用该方法P getPlace(String token)
来检索要调用的位置的新实例。由于代码拆分的异步性质,我无法
runAsync
在此方法中创建 a 内的位置。所以我必须把我的应用程序的所有地方都放在核心中。要将场所链接到活动,GWT 调用
Activity getActivity(Place place)
(fromcom.google.gwt.activity.shared.ActivityMapper
) 来检索活动的新实例。再一次,我必须把我所有的活动都放在核心中。
这是我想尝试的:编写一个自com.google.gwt.place.shared.Delegate
定义
- 将自身绑定在
PlaceChangeRequestEvent
. 如果 requestPlace 对应的 AppPiece 没有加载,则调用event.setWarning(NEED_TO_LOAD_MODULE)
- 在该
confirm(String message)
方法中,当消息等于时总是NEED_TO_LOAD_MODULE
返回 false (因此它不会打扰用户),并通过RunAsync
. - 加载模块后,调用
goTo(requestedPlace)
我的应用程序的每个 AppPiece 都包含一堆活动和相应的视图。由于映射器仅在PlaceChangeEvent
被触发时被调用,所以我可以通过AppPiece.getSomeActivityInstance()
.
我很确定这会起作用,但困扰我的是
- 根据 requestPlace 查找要加载的 AppPiece 将迫使我编写与我的映射器非常相似的代码
- 我想在相应的 AppPiece 中放置我的位置
Delegate
为此目的覆盖很棘手,我正在寻找更好的解决方案