我触发的 GWT 事件未由父演示者处理



我有一个子演示者(添加到插槽中的父演示者),当调用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()方法时,它有效,但两次!!

很可能您有计时问题。确保在子级中触发之前调用父级中的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());
                       }
                   });
               }
        }
       //...
}

相关内容

  • 没有找到相关文章

最新更新