GWT单例小部件在注入后从DOM中删除

麦克斯利

我有一个共享的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应用程序的所有视图之间共享窗口小部件的正确方法?

安德烈·沃尔金(Andrei Volgin)

首先,编译器非常擅长优化代码,因此使小部件单例在代码大小方面不会节省太多。它确实提高了性能,但是除非窗口小部件非常复杂,否则它不会引起注意。

在您的情况下,标题不应该是任何视图的一部分。您应该将其直接添加到您的应用程序小部件,即您添加到RootPanel的小部件。然后,您的“视图”将占据浏览器窗口的其余部分。您仍然可以告诉标题,当用户从一个视图导航到下一个视图时,它需要知道什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章