有关于在复杂 View 上使用 mvp 的问题。
假设,我们有一些带有样板设计的小部件 (ListWidget),如下所示:
控制按钮提供了在 ContentPanel(只是带有数据的常规 CellTable)和 DetailsPanel(在这里我们可以编辑特定条目,这不是模态对话框)之间切换的功能
DetailsPanel 反过来也有这个结构
Button1、Button2、Button3 应仅处理 DetailsPanel 并更改 ActionPanel(ActionPanel 是某种向导,因此其内容应在 Button1、Button2 或 Button3 单击后完全更改),但 Buttons Save 和 Cancel 应将我们导航回 ListWidget .
- 我应该使用什么方法来实现所描述的功能?
- 我是否应该在主上下文中使用 2 个不同的 ActivityManager 和其中一个?
- 如何管理消息并将消息广播到 ListWidget 上的相关面板? (是否可以将 Handlers 放在 Views 中并在某些操作上将事件推送到内部 eventBus 中? 例如,当我在 DetailsPanel 中保存项目时,PreviewPanel 应该发生变化并且该项目应该集中在 CellTable 中;等等)
- 如果我应该对两个不同的 ActivityManager 使用模式,我应该如何处理 Activity 更改行为?
谢谢,希望有人能帮助我。
最佳答案
我正在回答你的问题,首先是一个简短的解释,然后逐条回答你的问题。
在框架级别,您可以有一个实现 ValueChangeHandler
的类,并使用 History.addValueChangeHandler(controller);
在 History 上设置它,假设 Controller 正在实现值更改处理程序
您将使用 History.newItem("NameOfAction")
放入历史记录中的任何 newItem 都会调用 ValueChangeHandler
的实现,在这种情况下将是 controller
现在,在 ValueChangeHandler
的实现中,您可以
String token = event.getValue();
if (token.equals("NameOfAction")) {
Call Appropriate presenter
}
下面说说第二部分framework、presenter和view的实现。我假设 RootPanel 是所有 UI 小部件的容器。您可以为每个操作创建单独的演示者
presenter = new ActionPresenter(rpc, eventbus, new ActionView())
请注意,我正在创建一个 View 并将其传递给演示者,演示者获取数据并使用数据构建 View 。您稍后可以将容器传递给演示者以在 UI 上显示整个内容。
现在谈谈你的具体问题
- MVP 将是您最好的选择 关于 MVP 的文章 here还不错
- 我看不出有理由使用 2 个 Activity 管理器,只要这些小部件的容器相同
- EventBus 是理想的选择。如果您必须通过事件传递数据,主类中的静态字段等 session 变量将满足您的目的
- 我需要更多详细信息,具体说明您想在哪位经理中放置什么
希望这对您有所帮助!
关于java - GWT 中的 MVP。复杂的观点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926402/