我的mainpresenter中有内容插槽,如何在应用加载时将主播放器放在一个插槽中,将菜单插槽放在另一个插槽中?
还是不可能?
提前感谢。
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
对于GWTP 1.5+的用户,请注意插槽中引入了许多新的更改,并显示了演示者。现在可以使用针对页面内容的NestedSlot和要在所有页面上显示的菜单的PermanentSlot来完成相关案例。
幸运的是,这些变化都有很好的记录。有关新插槽类型的说明以及如何使用它们的示例,请参阅GWTP slot documentation。