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