【发布时间】:2015-01-17 21:56:43
【问题描述】:
我有一个子演示者(添加到插槽中的父级),当调用 onBind() 时,它通过 eventBus(在条件下)触发事件:
class ChildPresenter extends PresenterWidget<?> {
void onBind() {
instance = initMyInstance();
if (instance == null) {
eventBus.fireEvent(new MyEvent());
}
}
//...
}
在父级上,我使用onBind() 方法处理事件,如下所示:
class ParentPresenter extends Presenter<..>{
void onBind() {
eventBus.addHandler(MyEvent.TYPE, new MyEventHandler() {...} );
}
}
我也在父级中尝试过这个:addRegisteredHandler(LoggedOutEvent.TYPE, this) 和addVisibleHandler(...),我在父级演示器中实现了MyEventHandler 接口,但它不处理触发的事件。
我做错了吗?我还注意到,当我将处理过程移至我的父演示者的 onReveal() 方法时,它起作用了,但是两次!!
【问题讨论】:
-
你想通过
onBind方法实现什么?该方法在初始化presenter时只调用一次,不会调用。 -
应在 onBind() 方法中添加处理程序。这是一个时间问题。子 Presenter 在父级为其添加 Handler 之前触发了该事件。
标签: gwt gwtp gwt-platform event-bus