2017-02-24 38 views
0

之間的依賴關係,我認爲「問題」是有效的MVP爲好,但對我來說我試圖來解答它MVI。莫斯MVI - 主持人

使用案例

我有顯示數據的列表(各數據是列表本身),並且示出了在圖尋呼機的單個項目的數據列表中的細節視圖的主視圖。

我允許刪除詳細視圖中的項目,這意味着我必須更新詳細視圖和主視圖(例如,主視圖可能會顯示每個項目的子項目數量,所以此數字必須是更新)

問題

這又如何解決呢?

理念

各個層面主持人訂閱了一個全球性的主題和刪除作業發送MainPartialStateDetailPartialState這一全球性的課題,使每個視圖可以更新正確的ViewState

有沒有更好的方式來處理來自內部的水平部分的狀態在外部水平您的應用程序的邏輯呢?

回答

0

演示者應遵守管理該項目相同的業務邏輯的一部分。例如:你從哪裏加載物品?它們是從數據庫加載的嗎?在該示例中,MainPresenter和DetailsPresenter觀察相同的數據庫,並且每當從數據庫中刪除項目時,都將通知Presenter。

+0

這意味着,我必須有一個共享(全局)可觀察到的兩個主持人和像'ItemDeletedEvent'被髮射到這個觀察的和兩個演示者訂閱了這個觀察到的,該事件將正確地變換到它們各自的局部狀態的事件和那麼狀態減速器會完成剩下的工作,對嗎? – prom85

+0

你會發現這個有用:http://hannesdorfmann.com/android/mosby3-mvi-4 – sockeqwe

+0

我也明白這樣的說法。爲了簡單起見,這會導致一個小的副作用:您可能必須在兩位演示者中進行兩次工作。因此你得到一個分離的邏輯 – prom85