Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWTP获得从子演示者/视图到父演示者/视图的访问权限_Gwt_Gwt Platform - Fatal编程技术网

GWTP获得从子演示者/视图到父演示者/视图的访问权限

GWTP获得从子演示者/视图到父演示者/视图的访问权限,gwt,gwt-platform,Gwt,Gwt Platform,我有2个演示者/视图。让我们称它们为parent和childparentpresenter是childpresenter的容器(使用插槽机制)。 在childpresenter的视图中,用户单击了按钮,我想在parentpresenter中处理此操作 我该怎么做?最好的方法是什么?我应该使用某种事件和事件处理程序吗?还是应该将一个演示者插入另一个演示者?两者都可以 对于事件-GWTP有一个简化版的GWT事件: public interface MyEventHandler extends Eve

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

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

两者都可以

对于事件-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));
    }
}
要在父级中注册它,您可以使用:

addRegisteredHandler(MyEvent.TYPE, handler);

如果希望仅在父对象可见时处理它。我建议您在演示者的onBind方法中添加这些处理程序(在重写时不要忘记首先调用super.onBind()

注射用: 只需确保:

  • 您的家长演示者是单身人士
  • 为了避免GIN中的循环依赖错误,请不要像这样连接它

    @注入ParentPresenter-presenter

  • 而是这样做:

    @Inject 
    Provider<ParentPresenter> presenterProvider;
    
    @Inject
    提供者-陈述者-提供者;
    

    并在您的孩子中使用
    presenterProvider.get()
    访问它

    如何确保家长演示者是单身?我是这样绑定它的:
    bindPresenter(AppPresenter.class,AppPresenter.MyView.class,AppView.class,AppPresenter.MyProxy.class)我可以绑定为一个单例小部件。我还有in配置:
    bind(AppView.Binder.class).in(Singleton.class)-但这只是一个视图。你能帮忙吗?默认情况下,演示者是单身的。
    
    addVisibleHandler(MyEvent.TYPE, handler);
    
    @Inject 
    Provider<ParentPresenter> presenterProvider;