关于MVVM的一些疑问

主要疑问在于View层和ViewModel层的职责明确

ViewModel层承载的是逻辑和状态。其中状态包括什么?包括逻辑数据(比如User这样的数据)和UI状态(比如isLoading)吗?

User这样的数据,应该放在ViewModel层。那么类似isLoading等等的控制某些UI是否显示的变量也应该放在ViewModel层吗?

疑惑主要在于什么是UI什么是逻辑?他们的界限是什么?

另外ViewModel层能否直接弹出一个弹窗?比如我处理完一段逻辑,需要弹窗确认,我需要把结果先返回到View层,让View层来弹,还是直接ViewModel层弹合适?

阅读 2.5k
1 个回答

其实不用这么抠那些概念,mvvm最大的一个特点就是数据绑定,可以双向绑定数据,数据就是存储在ViewModel层,ViewModel层承载的所谓状态,就是view层绑定的数据,包括单项和双向绑定的数据,自然可以包括UI状态和业务逻辑数据,但业务逻辑数据一般都被转化为适合数据绑定的形式,而不是保持它们在model中的形式,在model中数据是以方便业务逻辑层处理形式存在,所以ViewModel的职责之一就是把model中的数据转为方便绑定的形式。

一般的,你可以理解为,逻辑数据从model层加载,而UI状态则由viewmodel自身创建并初始化。

因为viewModel负责处理UI事件,所以你要让viewModel弹出一个窗口也是合理的做法。view层不能弹出窗口,一般view层都是静态的没有逻辑,比如在vue/angular中view层都是html,html没法弹出窗口,它只能把事件绑定到viewModel中的函数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题