MVVM的再次理解

Posted muzizongheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVVM的再次理解相关的知识,希望对你有一定的参考价值。

MVVM的理解

 

 

MVVM: Model、View、ViewModel

 

我要着重介绍的是ViewModel, 从字面意思就能看出ViewModel是View层的Model,也就是说ViewModel就是View的逻辑层。 ViewModel就是为了存储View的相关状态、行为,而不仅仅是View绑定的一些字段。

 

举个例子:比如界面当前的编辑状态、选择状态等等状态都是ViewModel存储的。

再举个例子:当View收到用户的输入时,可以通过Command等来调用ViewModel的处理, ViewModel继续调用Model层的增删改或者通过Event通知别的ViewModel处理。

 

也可以认为ViewModel是Model的一种特殊例子。 好多Model层的数据并不能直接呈现给某个View,因此需要ViewModel做包装和转换。换句话说, 传统的DTO(Data Transfer Object)应该定义在ViewModel层来转换Model的某些数据。

 

总结下:View通过DataContext可以知道ViewModel, ViewModel不知道View!, ViewModel不应该对View有引用关系。当ViewModel对View的状态和行为都进行了存储时, 就能完全脱离View而存在。

 

 

和MVC的对比:

MVC一般都是Controller先接受到用户输入, 然后Controller来创建View, 而且Controller创建完View后就不关心View了。下次用户的输入又再次先进入Controller来处理。

MVVM是View先接受到用户输入, 然后View通知ViewModel;

 

 

以上是关于MVVM的再次理解的主要内容,如果未能解决你的问题,请参考以下文章

MVVM理解

事物再次深刻理解

MVVM简介

vue之mvvm的理解

iOS中的VIPER和MVC,MVVM 架构之间的比较

前端框架MVVM和VUE的理解和应用