1

使用 GWT 的 ClickHandler 的 MVP 方法是什么?

我的视图中有一个按钮,我想添加一个点击处理程序。

查看 button.addClickHandler(?)

传递了什么?主持人?新的点击处理程序?

示例案例1.查看代码:

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

在这种情况下,无法测试向按钮添加点击处理程序...

示例案例 2. Presenter 代码:

this.view.addClickHandlerToButton(this);

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

在这种情况下,在presenter中引入了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 回答