1

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()処理プロセスを親プレゼンターのメソッドに移動したときにも気づきましたが、2回も機能しました!!

4

1 に答える 1

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());
                       }
                   });

               }
        }

       //...
}
于 2015-01-17T22:04:39.660 に答える