我的被​​解雇的GWT事件不由父主持人​​处理

时间:2015-01-17 21:56:44

标签: gwt gwtp gwt-platform event-bus

我有一个子演示者(添加到插槽中的父级),在调用eventBus时通过onBind()(在条件下)触发事件:

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()方法时,它工作了两次!!

1 个答案:

答案 0 :(得分:5)

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

               }
        }

       //...
}