MVVM模型
- M:模型(Model) => data中的数据
- V: 视图(View) => 模板代码
- VM: 视图模型(ViewModel): Vue实例
观察发现:
1、data中所有的属性,最后都出现在vm上(vue底层进行了数据代理)
2、vm身上所有的属性以及Vue原型上所有属性,在Vue模板中都可以直接使用
数据代理
回顾Object.defineProperty()方法
1 | let number = 18; |
何为数据代理
数据代理:通过一个对象代理另一个对象中属性的操作(读/写)
1 | let obj = { x: 100 }; |
Vue中的数据代理
- Vue中的数据代理:
- 通过vm对象来代理data对象中属性的操作(读/写)
- Vue中数据代理的好处:
- 更加方便的操作data中的数据
- 基本原理:
- 通过Object.defineProperty()把data对象中的所有属性添加到vm上
- 为每一个添加到vm上的属性,都指定一个getter/setter
- 在getter/setter内部去操作(读/写)data中对应的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<div id="app">
<h2>名称:{{ name }}</h2>
<h2>武器:{{ weapon }}</h2>
</div>
<script>
const vm = new Vue({
data() {
return {
name: 's1mple',
weapon: 'AWP, M4A1, Ak47-->666',
}
}
})
vm.$mount('#app');
</script>