“core”指的是加载的应用程序的初始部分。
为了将url绑定到地点,GWT使用PlaceTokenizer<P extends Place>
。从网址加载应用程序时,它会调用方法P getPlace(String token)
来检索要调用的地方的新实例。
由于代码拆分的异步性质,我无法在此方法中的runAsync
内创建该位置。所以我必须将所有我的应用的位置放在核心。
要将地点与活动相关联,GWT会调用Activity getActivity(Place place)
(来自com.google.gwt.activity.shared.ActivityMapper
)来检索活动的新实例。
我必须再次将所有我的活动置于核心。
以下是我想要尝试的内容:编写自定义com.google.gwt.place.shared.Delegate
PlaceChangeRequestEvent
上绑定自己。如果未加载与requestedPlace对应的AppPiece,则调用event.setWarning(NEED_TO_LOAD_MODULE)
confirm(String message)
方法中,始终在消息等于NEED_TO_LOAD_MODULE
时返回false(因此不会打扰用户),并通过{{1}加载模块}}。 RunAsync
我的应用程序的每个AppPiece包含一堆活动和相应的视图。由于仅在goTo(requestedPlace)
被触发时才会调用地图制作器,因此我可以通过PlaceChangeEvent
生成我的活动的新实例。
我很确定这会起作用,但让我困扰的是
AppPiece.getSomeActivityInstance()
很棘手,我正在寻找更好的解决方案答案 0 :(得分:5)
您不必将所有活动都放在核心中(正如您所说):在同步检索Activity实例时,允许启动异步。这是您拨打GWT.runAsync
电话的地方。
请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=5129和https://groups.google.com/d/topic/google-web-toolkit/8_P_d4aT-0E/discussion