代码之家  ›  专栏  ›  技术社区  ›  Archie G. Quiñones

在MVVM中,谁的工作是决定导航流?视图模型还是视图?

  •  2
  • Archie G. Quiñones  · 技术社区  · 8 年前

    在Android环境中,当收到响应时,决策点是否应该位于ViewModel内部(类似于my ViewModel中的情况):

    if (response.isSuccess()) {
        nextScreenLiveData.value = GO_TO_NEXT_SCREEN
    } else if(response.isNeedAnotherScreen()) {
        anotherScreenLiveData.value = ANOTHER_SCREEN
    } else {
        backToBeforeScreen = BACK_TO_BEFORE_SCREEN
    }
    

    然后在活动/片段中观察所有这些LiveData。意味着每个LiveData有一个oberver。

    还是在我的ViewModel中执行类似操作更好:

    liveData.value = response
    

    然后在我的活动/片段中,让我做出决定:

    liveData.observe(this, Observer { response ->
       if (response.isSuccess()) {
            goToNextScreen()
        } else if(response.isNeedAnotherScreen()) {
            goToAnotherScreen()
        } else {
            goBack()
        }
    }
    

    提前谢谢。

    0 回复  |  直到 8 年前