2

我试图了解 GWT 活动和地点。而且我不确定如何实现特定的功能。

让我们在这里假设我也在使用 MVP,并且我的活动是我的演示者。

假设我有一个显示客户列表的活动(我们称之为活动 A)(及其相应的视图)。用户可以单击视图中的“创建客户”按钮。

我想要做的是:当用户单击按钮时,我希望在当前活动的顶部弹出一个“创建客户”对话框。我还希望将与所述对话框相关的所有逻辑分开,以便以后可以重用。

例如,可以在“创建发票”活动中重复使用相同的对话框。因此,用户可以在“创建发票”活动中单击类似的“创建客户”按钮,并显示与之前使用的相同对话框。

现在,如果我理解正确,我不想 goTo() 一个新的地方,因为它会终止当前活动“列出客户”或“创建发票”。

我考虑过定义“CreateCustomerPresenter”和“CreateCustomerDialog”(这将是相应的视图),并让我的“列出客户”/“创建发票”活动(提醒:他们也是我的演示者)扩展“CreateCustomerPresenter” ,但我不知道这是否是一个明智的想法......

在活动上下文中重用与对话框关联的逻辑+视图的推荐方法是什么?

4

2 回答 2

2

有几种有效的方法,但我通常更喜欢的一种是:根本不将对话视为场所(活动)。

推理:一个地方意味着您可以通过书签/浏览器历史记录访​​问它。假设我在客户列表中,然后单击“编辑客户”,将打开一个对话框。单击浏览器后退按钮时,是否要“返回”到列表?当我单击浏览器前进按钮时,对话框会再次打开吗?我对此表示怀疑,并相信用户希望使用浏览器按钮来返回/转发应用程序内的整个“页面”(即用户感觉就像页面的概念),而不是打开/关闭页面内的对话框.

于 2013-12-12T21:54:41.843 回答
1

我最近确实做到了这一点。

我采用的方法是以通常的方式为对话框的内容创建一个活动/视图。要启动,创建要嵌入对话框的活动/视图 - 我将其称为子活动。创建模态对话框,然后在作为面板传入对话框内容的子活动上调用 start。然后,在主要活动中,我将 mayStop、stop 等重定向到子活动。

棘手的部分是处理对话框关闭并将控制权传递回主要活动。我最终在对话框中添加了一个侦听器,并在事件总线上触发了我的主要活动。我对此不是 100% 满意,但它确实有效。

我没有使用过它,但我认为GWTP支持这种和其他方式来创建开箱即用的子活动。

于 2013-12-12T16:30:25.010 回答