在Android或iOS项目中,已经实现了MVVM架构,导航的正确方法是什么?
- ViewModel决定导航发生的时间和目的地
- ViewModel决定导航何时发生,View决定哪个是目的地
- 视图决定导航何时发生以及哪个是目的地
我想应该是这样的:
ViewModel
决定导航何时发生,目的地,以及数据(如果有的话)要传递到目的地。View
执行实际操作,决定导航动画和其他UI内容。
所以最终我们需要的逻辑是在ViewModel
和UI的东西应该是View
的责任。
一种方法是在需要导航时在ViewModel
中触发Event
。此事件应该指定目的地和要传递的数据(如果有的话)。View
订阅这个事件,当它被触发时,它决定导航动画,然后执行实际的动作(导航的实际动作是UI的一部分),考虑到目的地和要传递的数据。