11

我的主演示器中有内容槽,我如何在应用加载时将主演示器放在一个槽中,将菜单槽放在另一个槽中?

还是不可能?

提前致谢。

4

2 回答 2

16

是的你可以 !在下面的示例代码中,我假设您的 HomePresenter 是一个地方并扩展了 Presenter,而您的 MenuPresenter 扩展了 PresenterWidget。
在您的 MainPresenter 中:

@ContentSlot public static final Type<RevealContentHandler<?>> MAIN_SLOT = new Type<RevealContentHandler<?>>();  
@ContentSlot public static final Type<RevealContentHandler<?>> MENU_SLOT = new Type<RevealContentHandler<?>>();

@Override
protected void onReveal() {
    super.onReveal();
    setInSlot(MENU_SLOT, menuPresenter);
}

在您的 HomePresenter 中:

@Override
protected void revealInParent() {
    RevealContentEvent.fire(this, MainPresenter.MAIN_SLOT, this);
}

然后在 MainView :

@UiField Panel mainContainer;
@UiField Panel menuContainer;

@Override
public void setInSlot(Object slot, Widget content) {
    if (slot == MainPresenter.MAIN_SLOT) {
        mainContainer.clear();
        mainContainer.add(content);
    } else if (slot == MainPresenter.MENU_SLOT) {
        menuContainer.clear();
        menuContainer.add(content);
    } else {
        super.setInSlot(slot, content);
    }
}
于 2011-09-28T07:21:24.390 回答
1

对于 GWTP 1.5+ 的用户,请注意对插槽和展示演示者进行了许多新更改。现在可以使用 NestedSlot 作为页面内容,使用 PermanentSlot 作为您希望在所有页面上显示的菜单来完成有问题的案例。

幸运的是,这些更改有据可查。请参阅GWTP 插槽文档以获取有关新插槽类型的说明以及如何使用它们的示例。

于 2016-02-25T20:49:11.157 回答