2016-05-12 33 views
1

清除演示者数据的建议方法是什么?我想在登录时清除我的UI。GWTP - 清除演示者数据

作为当前问题的一个例子,我有一个用于收集表单数据的NestedPresenter。有人可以注销,然后另一个用户可以在浏览器会话仍处于活动状态时重新登录,并且当表单显示之前,用户的数据仍然显示。

有什么建议吗?

回答

1

它高度依赖于您在应用程序中使用的导航。如果您使用PlaceManager在几乎无状态的屏幕之间导航 - 覆盖onReset方法是我最推荐的地方,因为每次导航将用户置于演示者时 - 您的清除代码将被执行。

Referring to documentation

onReset()

这发生在每个用户的导航请求的结束。例如 如果用户导航到已绑定的发布者 (如果已添加到插槽)需要执行某些代码,则这是 需要被覆盖的方法。但要小心,这经常被调用,所以 应该在这个方法中执行不应该太重。

清除您的视图,然后获取新模型。如果onReset是你过于频繁 - 坚持onReveal()然后

onReveal()

onReveal()被揭示演示时,将调用。在 GWTP的词汇表中,这意味着何时将演示者添加到插槽 因此,这并不一定意味着该对象在DOM中可见 。请参阅此问题以了解消除歧义。当人们想要在 Presenter上添加一些内容时, 应该被重写。

,如果onReveal不工作你的情况以某种方式(你保持插入插槽的所有时间+导航的要求并不重要主持人) - 每次你的演讲是隐藏的只是明确信息,通过覆盖onHide()

+0

感谢您的回答。这听起来像你正在提出一些自定义数据清理,同时在适当的时候挂钩gwtp生命周期。我对这种方法的担忧是维修令人头痛,并且容易出错。每当我引入新功能时,例如新数据或有条件显示的元素,我都有更新自定义清除数据方法的额外任务。 –

+0

那么,你把这种方法放在你的视图中,并在演示者生命周期的某个地方调用它。在GWTP afaik中没有数据绑定,因此只有当您设置模型时才知道在视图中填充了什么。我们通常在这些情况下做的是:1.在View和ViewImpl中创建一个方法setModel(SomeJavaPojo model){},然后创建另一个方法clear(),它可以调用setModel(new SomeJavaPojo())来填充默认值。另外,请记住,onReset会被串联到你的较小的PresenterWidgets中,所以如果你的代码是完美的粒度 - 它不会那么复杂 –