GWTP 从子演示者/视图访问父演示者/视图

  • 本文关键字:视图 访问 GWTP gwt gwt-platform
  • 更新时间 :
  • 英文 :


我有 2 个演示者/视图。让我们称它们为parentchild. parent演示者是child演示者的容器(使用插槽机制)。在演示者的视图中,用户单击了child按钮,我想parent演示者中处理此操作。

我该怎么做?最好的方法是什么?我应该使用某种事件和事件处理程序吗?还是我应该将一个演示者注入另一个演示者?

两者都是可能的。

对于事件 - GWTP 具有 GWT 事件的简化版本:

public interface MyEventHandler extends EventHandler {
    void onMyEvent(MyEvent event);
}
public class MyEvent extends GwtEvent<MyEventHandler> {
    public static Type<MyEventHandler> TYPE = new Type<MyEventHandler>();
    private Object myData;
    public Type<MyEventHandler> getAssociatedType() {
        return TYPE;
    }
    protected void dispatch(MyEventHandler handler) {
        handler.onMyEvent(this);
    }
    public MyEvent(Object myData) {
        this.myData = myData;
    }
    /*The cool thing*/
    public static void fire(HasHandlers source, Object myData){
        source.fireEvent(new MyEvent(myData));
    }
}

因此,在您的孩子演示器中,您只需执行以下操作:

MyEvent.fire(this, thatObjectYoudLikeToPass);

要注册它,请在父级中使用:

addRegisteredHandler(MyEvent.TYPE, handler);

addVisibleHandler(MyEvent.TYPE, handler);

如果希望仅在父项可见时处理它。我建议你在演示器的onBind方法中添加这些处理程序(不要忘记在覆盖时先调用super.onBind()

注射用:只需确保:

  1. 您的父演示者是单例
  2. 为避免 GIN 中的循环依赖错误,请不要像

    @Inject 家长演示者演示者;

而是这样做:

@Inject 
Provider<ParentPresenter> presenterProvider;

并在您的孩子身上presenterProvider.get()访问它

相关内容

  • 没有找到相关文章

最新更新