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