问答

关于MVVM的一些疑问

作者:admin 2021-06-16 我要评论

主要疑问在于View层和ViewModel层的职责明确 ViewModel层承载的是逻辑和状态。其中状态包括什么?包括逻辑数据(比如User这样的数据)和UI状态(比如isLoading)...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

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

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

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

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

###

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

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

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 关于MVVM的一些疑问

    关于MVVM的一些疑问

  • PyQt5中布局内的控件如何充满布局?

    PyQt5中布局内的控件如何充满布局?

  • 有没有办法将一个内存表的所有行重组一

    有没有办法将一个内存表的所有行重组一

  • 用hexo推送博客github出现的问题

    用hexo推送博客github出现的问题

腾讯云代理商
海外云服务器