2011-06-27 16 views
0

私はselectBoxとtableを持つUIBinderを構築しました。テーブルにはdbのデータが格納されます。 selectBoxの選択を変更すると、新しいデータを取得するためにクエリを実行してください。 私はスクリーンビューでウィジェットを使用し、プレゼンターでウィジェットを開始します。 UBinderの は、selectBoxが変更されたときにイベントを発生させましたが、プレゼンターで捕捉できません。 どのように私はそれを正常に行うことができます。ウィジェットで 私のイベント:GWTはUIBinderのイベントを処理します

@Override 
public void onChange(ChangeEvent event) 
{ 
    KPIOptionChangedEvent e = new KPIOptionChangedEvent(); 
    fireEvent(e); 
} 

プレゼンターでのイベントをキャッチ:

eventBus.addHandler(KPIEvents.KPIOptionChangedEvent.TYPE, 
    new KPIHandlers.KPIOptionChangedHandler() 
    { 
     @Override 
     public void execute(KPIOptionChangedEvent event) 
     { 
      Window.alert(event.getKPI().getName()); 
     } 
    }); 

おかげ

答えて

0

fireEvent(e)Widgetに定義され、ウィジェットのインスタンスにイベントを発生するために使用されます。あなたはEventBusてイベントを送信する場合は

その後、呼び出し:

eventBus.fire(e); 
+0

その私が今、それが動作していない何: KPIOptionChangedEvent電子=新しいKPIOptionChangedEvent(); \t \t \t \t \t \t HandlerManager eventBus = new HandlerManager(this); \t \t \t eventBus.fireEvent(e); \t \t \t \t \t \t} – Rami

+0

あなたは、アプリケーションごとに1つだけEventBusを作成する必要があります - 彼らは自分たちの間で通信していないとそれだけで混乱を作成するように、複数のEventBusesを作成する必要は、ありません。 メインクラスの1つに静的フィールドを使用します。 –

+0

私は理解していますが、私のオブジェクトは、メインまたは他の論理クラスのものに接続されるべきではありません。それは依存して行動すべきです。 – Rami

関連する問題