这篇文章主要介绍了MVVM模式中ViewModel和View、Model有什么区别?本文分别解释了它们的功能和作用,然后总结了它之间的区别,需要的朋友可以参考下

  Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。

  View:也很简单,就是展现出来的用户界面。

  基本上,绝大多数软件所做的工作无非就是从数据存储中读出数据,展现到用户界面上,然后从用户界面接收输入,写入到数据存储里面去。所以,对于数据存储(model)和界面(view)这两层,大家基本没什么异议。但是,如何把model展现到view上,以及如何把数据从view写入到model里,不同的人有不同的意见。

  MVC派的看法是,界面上的每个变化都是一个事件,我只需要针对每个事件写一堆代码,来把用户的输入转换成model里的对象就行了,这堆代码可以叫controller。

  而MVVM派的看法是,我给view里面的各种控件也定义一个对应的数据对象,这样,只要修改这个数据对象,view里面显示的内容就自动跟着刷新,而在view 里做了任何操作,这个数据对象也跟着自动更新,这样多美。所以:

  ViewModel:就是与界面(view)对应的Model。因为,数据库结构往往是不能直接跟界面控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象。

  至于viewmodel的数据随着view自动刷新,并且同步到model里去,这部分代码可以写成公用的框架,不用程序员自己操心了。

  简单的说,ViewModel就是View与Model的连接器,View与Model通过ViewModel实现双向绑定。(引用三联,阮一峰)。

最新文章

  1. 根据UIColor对象,获取对应的RGBA值
  2. yii2中gii外网访问的配置方法
  3. eclipse 使用
  4. POJ 3321 Apple Tree
  5. sql server 跨库操作
  6. 大并发连接的oracle在Linux下内存不足的问题的分析
  7. mysql max_allowed_packet自动重置为1024 终结解决
  8. Mac开机黑屏解决办法
  9. 基于Android的ELF PLT/GOT符号和重定向过程ELF Hook实现(by 低端农业代码 2014.10.27)
  10. HEAD FILE
  11. PyCharm快捷键使用
  12. HDOJ4734 F(x)
  13. RabbitMQ笔记四:Binding,Queue,Message概念
  14. 利用keyframes实现幻灯效果
  15. SpringCloud负载均衡笔记
  16. udev学习笔记汇总
  17. CROC 2016 - Qualification B. Processing Queries 模拟
  18. 前端 javascript 定时器
  19. Python迭代dict的value
  20. 【数论】【素数判定】CODEVS 2851 菜菜买气球

热门文章

  1. ubuntu 安装 gightingale
  2. 一个故事看懂CPU的TLB
  3. python函数参数类型:位置参数、默认参数、动态参数、关键字参数
  4. 2021.7.27--Benelux Algorithm Programming Contest 2020 补提
  5. rocketmq优雅停机往事
  6. Golang通脉之错误处理
  7. SpringCloud 2020.0.4 系列之服务降级
  8. 2021.9.17考试总结[NOIP模拟55]
  9. InitSpatialMetaData()速度慢的问题
  10. stm32中的串口通信你了解多少