用于PresenterWidget的TabContainer的GWTP实现

时间:2013-06-21 08:22:30

标签: gwt gwt-platform gwtp

我正在为应用程序使用GWTP。在此应用中,我经常需要执行PresenterWidget,其中包含每个标签中带有PresenterWidget的标签。

由于容器是PresenterWidget,我不能使用类TabContainerPresenter,所以我正在进行自己的实现。

我在尝试管理标签PresenterWidgetonReveal()等中包含的onHide()生命周期时遇到了一些问题。

第一个问题:在这种特殊情况下,是否建议您手动拨打onReveal()onHide()等?

第二个问题:我试图在不调用这些方法的情况下管理生命周期。

这就是我所做的:当用户点击标签时,主要演示者会调用setInSlot(index,presenterWidget)将相应的PresenterWidget放在右侧标签中。

但是:当我点击标签时,会在相应的onReveal()(好!)上调用PresenterWidget,然后在所有onReset()上调用PresenterWidget:为什么全部?我希望仅在与活动标签对应的onReset()上调用PresenterWidget

=>在这种情况下,setInSlot()是正确的调用方法吗?

1 个答案:

答案 0 :(得分:2)

也许这可能会有所帮助:https://github.com/ArcBees/GWTP/wiki/Presenter-%22Slots%22

  1. 我不建议手动调用生命周期方法。没有它们应该可以正常工作。
  2. 您想使用setInSlot()方法,因为在任何时候只有一个PresenterWidget处于活动状态。
  3. 但是,您为每个PresenterWidget使用不同的SLOTS。 setInSlot()的工作方式是替换分配给该广告位的PresenterWidget。由于您为每个标签使用了不同的广告位,因此无法删除其他标记PresenterWidgets。其他PresenterWidget留在他们的插槽中,这可能是他们调用onReset()的原因。 你有两个选择:

    • 如果您想保留不同的广告位,则应在所有不可见的removeFromSlot上致电PresenterWidgets
    • 只指定一个广告位(TAB_CONTENT),只需使用setInSlot()
    • 即可