我有一个共享的GWT小部件“ HeaderView”,它是所有视图的标题。我通过GIN通过-
bind(HeaderView.class).asEagerSingleton();
然后,我可以像这样注入自己的观点-
@Inject
public DashboardViewImpl(HeaderView headerView) {
this.headerView = headerView;
initWidget(dashboardViewUiBinder.createAndBindUi(this));
}
第一次显示视图时,此方法工作正常。但是,如果我更改了位置然后返回到“ HeaderView”不再可见时已经显示的视图。检查HTML显示它不再附加到DOM。
我的观点被约束为单例-
bind(DashboardView.class).to(DashboardViewImpl.class).in(Singleton.class);
我假设由于小部件只允许有一个父对象,所以在加载下一页后,HeaderView将从DOM中删除。
是否存在在GWT应用程序的所有视图之间共享窗口小部件的正确方法?
首先,编译器非常擅长优化代码,因此使小部件单例在代码大小方面不会节省太多。它确实提高了性能,但是除非窗口小部件非常复杂,否则它不会引起注意。
在您的情况下,标题不应该是任何视图的一部分。您应该将其直接添加到您的应用程序小部件,即您添加到RootPanel的小部件。然后,您的“视图”将占据浏览器窗口的其余部分。您仍然可以告诉标题,当用户从一个视图导航到下一个视图时,它需要知道什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句