我的主演示器中有内容槽,我如何在应用加载时将主演示器放在一个槽中,将菜单槽放在另一个槽中?
还是不可能?
提前致谢。
是的你可以 !在下面的示例代码中,我假设您的 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);
}
}
对于 GWTP 1.5+ 的用户,请注意对插槽和展示演示者进行了许多新更改。现在可以使用 NestedSlot 作为页面内容,使用 PermanentSlot 作为您希望在所有页面上显示的菜单来完成有问题的案例。
幸运的是,这些更改有据可查。请参阅GWTP 插槽文档以获取有关新插槽类型的说明以及如何使用它们的示例。