使用GWT的ClickHandler的MVP方法是什么?
我的视图中有一个按钮,我想在其中添加一个点击处理程序。
查看 button.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),应该避免使用。
答案 0 :(得分:2)
将视图注册到clickevent, 并在视图中处理它:
的onClick(){ presenter.onButtonClicked(); }
可能按钮有一些语义,如“deleteEntry”,因此演示者方法将是“onDeleteEntryClicked”或“deleteEntry”
mvp说让视图决定使用哪种ui元素,并且演示者执行命令。 所以“deleteEntry”背后的逻辑不会改变,你可以用其他ui元素替换按钮 - 也可以没有hasClickHandler。
答案 1 :(得分:-1)
该按钮实现了一个名为HasClickHandlers的接口,该接口有一个注册点击事件的方法。
在View界面中,您可以将此界面返回给演示者,演示者可以在其上调用addClickHandler。
查看界面:
public MyView extends IsWidget{
public HasClickHandlers getButton();
}
您的观看实施:
public HasClickHandler getButton(){
return button;
}
在演示者中:
view.getButton().addClickHandler(new ClickHandler(){
....
});