1

GWT の ClickHandler を使用するための MVP アプローチは何でしょうか?

ビューにボタンがあり、クリック ハンドラーを追加したいと考えています。

ボタンを表示.addClickHandler(?)

何が渡されますか?プレゼンター?クリックハンドラを新しくしましたか?

事例 1. コードを表示:

this.myButton.addClickHandler(new ClickHandler()
    {
        @Override
        public void onClick(ClickEvent event)
        {
            myPresenter.buttonClicked();
        }
    });

この場合、クリック ハンドラーをボタンに追加することはテストできません...

ケース例 2. プレゼンター コード:

this.view.addClickHandlerToButton(this);

    @Override
    public void onClick(ClickEvent event)
    {
        buttonClicked();
    }

この場合、GWT コード (ClickEvent) がプレゼンターに導入されますが、これは避ける必要があります。

4

2 に答える 2

2

私はこれをこのように解決しました:

ビューを clickevent に登録し、ビューで処理します。

onClick(){ presenter.onButtonClicked(); }

おそらくボタンには「deleteEntry」のようなセマンティックがあるため、プレゼンターのメソッドは「onDeleteEntryClicked」または「deleteEntry」になります。

mvp は、使用する ui 要素の種類をビューに決定させ、プレゼンターがコマンドを実行すると述べています。そのため、「deleteEntry」の背後にあるロジックは変更されませんが、ボタンを他の UI 要素で置き換えることもできますが、hasClickHandler も必要ありません。

于 2012-06-15T07:04:18.783 に答える
-1

このボタンは、クリック イベントを登録するためのメソッドを持つ HasClickHandlers というインターフェイスを実装します。

View インターフェイスで、このインターフェイスをプレゼンターに返すことができます。プレゼンターは、その上で addClickHandler を呼び出すことができます。

ビュー インターフェイス:

public MyView extends IsWidget{
    public HasClickHandlers getButton();

}

ビューの実装:

public HasClickHandler getButton(){
    return button;
}

プレゼンターで:

view.getButton().addClickHandler(new ClickHandler(){
....
});
于 2012-06-14T21:03:16.360 に答える