2016-05-12 31 views
1

清除演示者數據的建議方法是什麼?我想在登錄時清除我的UI。GWTP - 清除演示者數據

作爲當前問題的一個例子,我有一個用於收集表單數據的NestedPresenter。有人可以註銷,然後另一個用戶可以在瀏覽器會話仍處於活動狀態時重新登錄,並且當表單顯示之前,用戶的數據仍然顯示。

有什麼建議嗎?

回答

1

它高度依賴於您在應用程序中使用的導航。如果您使用PlaceManager在幾乎無狀態的屏幕之間導航 - 覆蓋onReset方法是我最推薦的地方,因爲每次導航將用戶置於演示者時 - 您的清除代碼將被執行。

Referring to documentation

onReset()

這發生在每個用戶的導航請求的結束。例如 如果用戶導航到已綁定的發佈者 (如果已添加到插槽)需要執行某些代碼,則這是 需要被覆蓋的方法。但要小心,這經常被調用,所以 應該在這個方法中執行不應該太重。

清除您的視圖,然後獲取新模型。如果onReset是你過於頻繁 - 堅持onReveal()然後

onReveal()

onReveal()被揭示演示時,將調用。在 GWTP的詞彙表中,這意味着何時將演示者添加到插槽 因此,這並不一定意味着該對象在DOM中可見 。請參閱此問題以瞭解消除歧義。當人們想要在 Presenter上添加一些內容時, 應該被重寫。

,如果onReveal不工作你的情況以某種方式(你保持插入插槽的所有時間+導航的要求並不重要主持人) - 每次你的演講是隱藏的只是明確信息,通過覆蓋onHide()

+0

感謝您的回答。這聽起來像你正在提出一些自定義數據清理,同時在適當的時候掛鉤gwtp生命週期。我對這種方法的擔憂是維修令人頭痛,並且容易出錯。每當我引入新功能時,例如新數據或有條件顯示的元素,我都有更新自定義清除數據方法的額外任務。 –

+0

那麼,你把這種方法放在你的視圖中,並在演示者生命週期的某個地方調用它。在GWTP afaik中沒有數據綁定,因此只有當您設置模型時才知道在視圖中填充了什麼。我們通常在這些情況下做的是:1.在View和ViewImpl中創建一個方法setModel(SomeJavaPojo model){},然後創建另一個方法clear(),它可以調用setModel(new SomeJavaPojo())來填充默認值。另外,請記住,onReset會被串聯到你的較小的PresenterWidgets中,所以如果你的代碼是完美的粒度 - 它不會那麼複雜 –