我認爲你是在正確的軌道,使彈出自包含,並保持它的一個單一的實例,如果你可以幫助它。
就編輯的細節而言,什麼是沒有意義的?總體思路是,您可以創建一次驅動程序,使用彈出窗口(實現編輯器)對其進行初始化,然後在每次準備使用新模型顯示驅動程序時調用驅動程序上的編輯。
我平時喜歡的東西結束(假設該類擴展彈出,實現了編輯器,並已內部定義的驅動程序)
public MyPopup() {
//uibinder or other layout
this.driver = GWT.create(Driver.class);
driver.initialize(this);
}
public void edit(MyModel model) {
driver.edit(model);
show();
}
調味這個答案與我自己的方法/偏見,我喜歡一個MVP設置視圖和演示者都是界面的位置,以及演示者impl不知道視圖最終如何繪製的位置。通常看起來像有關這對我來說
public interface MyModelEditorView extends Editor<MyModel> {
// this param is used in a mobile/table situation, where popups aren't as friendly
void show(AcceptsOneWidget parent);
// exposes the driver for the presenter *
SimpleBeanEditorDriver<MyModel, ?> getDriver();
void setPresenter(Presenter presenter);
public interface Presenter {
// this is the only method that is called externally
void show(AcceptsOneWidget parent, MyModel model);
// called by click handlers in the view impl, probably by @UiHandler methods
void onSaveClicked();
void onCancelClicked();
}
}
*主持人或許應該控制驅動器,因此它可以檢查錯誤,如果需要在錯誤從服務器傳,編輯的新車型,並沖洗出來的結果。
謝謝,我最終做了類似的事情 - 我爲3個視圖使用了1個活動:實際的主要assignView,checkoutPopup和checkinPopup,並使用1個活動作爲結帳和簽入彈出窗口的編輯器 - 我不知道如果這有問題,但它似乎工作正常 – 2012-01-30 00:50:46