parent 演示者未处理我触发的 GWT 事件
My fired GWT event is not handled by the parent presenter
我有一个 child 演示者(添加到插槽中的 parent),当 onBind()
是称为:
class ChildPresenter extends PresenterWidget<?> {
void onBind() {
instance = initMyInstance();
if (instance == null) {
eventBus.fireEvent(new MyEvent());
}
}
//...
}
在 parent 上,我在 onBind()
方法中处理事件是这样的:
class ParentPresenter extends Presenter<..>{
void onBind() {
eventBus.addHandler(MyEvent.TYPE, new MyEventHandler() {...} );
}
}
我也在 parent 中尝试了这个:addRegisteredHandler(LoggedOutEvent.TYPE, this)
和 addVisibleHandler(...)
也是,我在 parent 演示者中实现了 MyEventHandler
接口,但是它不处理触发的事件。
我做错了吗?我还注意到,当我将处理过程移至 parent 演示者的 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());
}
});
}
}
//...
}
我有一个 child 演示者(添加到插槽中的 parent),当 onBind()
是称为:
class ChildPresenter extends PresenterWidget<?> {
void onBind() {
instance = initMyInstance();
if (instance == null) {
eventBus.fireEvent(new MyEvent());
}
}
//...
}
在 parent 上,我在 onBind()
方法中处理事件是这样的:
class ParentPresenter extends Presenter<..>{
void onBind() {
eventBus.addHandler(MyEvent.TYPE, new MyEventHandler() {...} );
}
}
我也在 parent 中尝试了这个:addRegisteredHandler(LoggedOutEvent.TYPE, this)
和 addVisibleHandler(...)
也是,我在 parent 演示者中实现了 MyEventHandler
接口,但是它不处理触发的事件。
我做错了吗?我还注意到,当我将处理过程移至 parent 演示者的 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());
}
});
}
}
//...
}