amr*_*sal 1 gwt event-bus gwt-platform gwtp
我有一个子演示者(添加到插槽中的父节点),eventBus在onBind()调用时通过(在条件下)触发事件:
class ChildPresenter extends PresenterWidget<?> {
void onBind() {
instance = initMyInstance();
if (instance == null) {
eventBus.fireEvent(new MyEvent());
}
}
//...
}
Run Code Online (Sandbox Code Playgroud)
在父级上,我在onBind()方法中处理事件,如下所示:
class ParentPresenter extends Presenter<..>{
void onBind() {
eventBus.addHandler(MyEvent.TYPE, new MyEventHandler() {...} );
}
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个父:addRegisteredHandler(LoggedOutEvent.TYPE, this)和 addVisibleHandler(...)太,在这里我实现MyEventHandler父演示接口,但它不处理触发的事件.
我做错了吗?我也注意到当我将处理过程移动到onReveal()我的父母演示者的方法时,它工作了两次!!
很可能你有时间问题.确保在子项中触发之前调用父项中的addHandler(),并且我认为它应该发生在单独的浏览器事件中.试试这个看看是否有帮助:
class ChildPresenter extends PresenterWidget<?> {
void onBind() {
instance = initMyInstance();
if (instance == null) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
eventBus.fireEvent(new MyEvent());
}
});
}
}
//...
}
Run Code Online (Sandbox Code Playgroud)