GWT平台一起揭示演示者



嘿,所以我只是在学习 gwtp 框架,我遇到了一些困境。我在顶层有一个 LayoutPresenter,它有一个主内容槽和菜单内容槽,如果可能的话,我正在尝试找到一种方法将每个槽的演示者绑定在一起,以便在显示主要内容时它会自动显示正确的侧菜单。目前,我在菜单的演示器中有一个静态布尔值,可以在揭示和隐藏上更新。然后,我可以检查菜单在显示主要内容时是否可见,如果不是,我会显示它。

    public class MenuPresenter extends Presenter<MenuPresenter.MyView, MenuPresenter.MyProxy> {
private static boolean hidden = true;
    ...
    @Override
protected void revealInParent() {
    RevealContentEvent.fire(this, LayoutPresenter.SIDE, this);
}
@Override
protected void onReveal(){
    super.onReveal();
    hidden = false;
}
@Override
protected void onHide(){
    super.onHide();
    hidden = true;
}
public static boolean isHidden(){
    return hidden;
}
    }

然后在主要内容演示者中:

    public class ContentPresenter extends
    Presenter<ContentPresenter.MyView, ContentPresenter.MyProxy> {
...
private final DispatchAsync dispather;
private final PlaceManager placeManager;
@Inject
public PhoneCallPresenter(final EventBus eventBus, final MyView view, final MyProxy proxy, final DispatchAsync dispatcher, final PlaceManager placeManager) {
    super(eventBus, view, proxy);
    this.dispather = dispatcher;
    this.placeManager = placeManager;
}
@Override
protected void revealInParent() {
    RevealContentEvent.fire(this, LayoutPresenter.CONTENT, this);
}
@Override
protected void onReveal() {
    super.onReveal();
    if (MenuPresenter.isHidden()){
        placeManager.revealPlace(new PlaceRequest(NameTokens.menu));
    }
}

}

据我所知,您希望为不同的主要内容使用不同的侧边菜单。
在这种情况下,有两种解决方案:

  1. 将菜单视为普通演示者(每种主要内容类型可能会有多个菜单(。您只需要使用与主要内容演示者相同的历史记录令牌注释相应的MenuPresenter。因此,对于上面的示例,您将有一个使用与PhoneCallPresenter相同的历史记录令牌注释的PhoneCallMenuPresenter。当您导航到/phonecall(或任何您的历史令牌(时,PhoneCallPresenterPhoneCallMenuPresenter都会自动显示。(您不必执行任何操作(。
  2. 如果您只想有一个MenuPresenter并将要显示的逻辑放在Presenter本身中,我建议您使用 PresenterWidget 而不是普通PresenterMenuPresenterWidget将被注入LayoutPresenter,并添加到LayoutPresenter.SIDE槽中。您可以为MenuPresenterWidget定义一个资源库,以指定当前显示的主要内容(将从LayoutPresenter调用资源库(,或者您可以重写 onReset() 方法并检查当前位置请求并决定在菜单中显示什么。

对于解决方案 1,您必须为每个主要内容Presenter设置一个MenuPresenter,并且可能有许多代码行是多余的(您可以创建一个基本MenuPresenter并从中派生(。因此,如果您在侧菜单中有很多业务逻辑,这些逻辑从主要内容到主要内容都有很大不同,我会选择解决方案 1。如果您只显示不同的链接,则为每个主要内容创建MenuPresenter的开销可能会很高Presenter我会使用解决方案 2 并仅为所有主要内容类型创建一个MenuPresenterWidget并始终显示它。

相关内容

  • 没有找到相关文章

最新更新