我是 GWT 的新手,我一直在审查使用 rpcService 和 eventBus 的 MVP 实现。我想知道如何实现一个选项卡面板,以便每个选项卡都有自己的子视图。我一直在制作从面板派生的自定义小部件,或者弄清楚如何让演示者使用另一个演示者,或者制作一个为我处理这一切的复合演示者类之间犹豫不决。
有没有人有关于如何分离每个选项卡的功能而不是将实现保留在一个视图/演示者对中的建议?
我处于同样的情况,但决定更改我的实现以模拟TabPanel。如果您的视图和演示者不需要相互交互(例如将某些内容从一个选项卡拖到另一个选项卡),那么我认为通过将视图加载到共享的 SimplePanel 中来分离功能会更容易。您可以使用一个小部件模拟 TabPanel 的选项卡部分,该小部件侦听 PlaceChangeEvents(以更改突出显示的选项卡)并将 goTo 命令发送到您的应用程序正在使用的 PlaceController(以处理对不同标题的点击)。
实现这一点花了几个小时,结果代码更清晰。我最初的尝试涉及监听 PlaceChangeEvents 然后调用适当的 tabPanel.selectTab() 函数,但是试图弄清楚如何启动和停止不同选项卡的演示者太混乱了——就像你建议的那样,你必须实现您自己的复合视图模型。
我解决了这个问题,但没有伪造主选项卡,而是使用 GWT 的基本 SDK 提供的选项卡。我这样做是:
这一切都像一个魅力。MainTabPresenter 非常薄,并允许将 View/Presenters 的完整实现写入它们自己的文件。