![](/img/trans.png)
[英]GWT. Where to register event handlers(eventBus) within MVP pattern
[英]GWT Mvp and handlers
在過去的幾個月中,我一直在學習GWT,發現Mvp是設計項目的最佳方法之一。 我已經閱讀了Google的教程MVP第1部分,並在他們的教程中將clickHandlers(例如)放在演示者中。 現在,我在構建許多視圖類時遇到了問題,這些類具有許多具有相同HTML ID的按鈕,然后用戶與這些按鈕進行交互……因此,如果我每個視圖都有一個按鈕,則總共有6個按鈕。 當用戶單擊其中一個按鈕時,該按鈕將對同一個對象工作6次。因此,我閱讀並發現最好將處理程序放在視圖類上並為演示者創建一個事件。
所以我做了:
查看類別:
rb0.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
selectHandler.onEvent(1);
System.out.print("rate 1");
}
});
rb1.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
selectHandler.onEvent(2);
System.out.print("rate 2");
}
});
rb1.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
selectHandler.onEvent(3);
System.out.print("rate 3");
}
});
rb1.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
selectHandler.onEvent(4);
System.out.print("rate 4");
}
});
rb1.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
selectHandler.onEvent(5);
System.out.print("rate 5");
}
});
Presenter類:(事件處理程序)
private void bind() {
.
.
.
DoEvent selectHandler = new DoEvent(){
public void onEvent(int select) {
fetchRating(select, user.getUserId());
}
};
display.setSelectHandler(selectHandler);
帶有視圖的Presenter的調用是從MainPagePresenter類調用的:
presenter = new AssetViewPresenter(rpcService,eventBus,new AssetView(),result.get(i));
現在我的問題是,當我單擊視圖中的按鈕時,沒有任何反應...就像演示者和視圖未連接一樣,可能是什么問題?
抱歉,這是一個愚蠢的錯誤...我的按鈕是rb0,rb1和rb2 ...,我復制了具有相同按鈕ID的點擊處理程序! 是的,我為自己感到羞恥
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.