1、对于 MVVM 的理解
MVVM 是 Model-View-ViewModel 的缩写。
Model 代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑。
View 代表 UI 组件,它负责将数据模型转化成 UI 展现出来。
ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就
是一个同步 View 和 Model 的对象,连接 Model 和 View。
在 MVVM 架构下,View 和 Model 之间并没有直接的联系,而是通过 ViewModel
进行交互,Model 和 ViewModel 之间的交互是双向的, 因此 View 数据的变
化会同步到 Model 中,而 Model 数据的变化也会立即反应到 View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而 View 和
Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业
务逻辑,不需要手动操作 DOM, 不需要关注数据状态的同步问题,复杂的数据
状态维护完全由 MVVM 来统一管理。
2、vue 实现双向数据绑定
vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,
通过 Object.defineProperty()来劫持各个属性的 setter,getter,在数据
变动时发布消息给订阅者,触发相应监听回调。当把一个普通 Javascript 对
象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用
Object.defineProperty 将它们转为 getter/setter。用户看不到
getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通
知变化。(学习视频分享:vue 视频教程)
vue 的数据双向绑定 将 MVVM 作为数据绑定的入口,整合 Observer,Compile
和 Watcher 三者,通过 Observer 来监听自己的 model 的数据变化,通过
Compile 来解析编译模板指令(vue 中是用来解析 {{}}),最终利用 watcher
搭起 observer 和 Compile 之间的通信桥梁,达到数据变化 —>视图更新;视图
交互变化(input)—>数据 model 变更双向绑定效果。
3、Vue 组件间的参数传递
1.父组件与子组件传值
父组件传给子组件:子组件通过 props 方法接受数据; 子组件传给父组件:
$emit 方法传递参数