Skip to content

Commit 320a8da

Browse files
authored
fix expression error
1 parent a67db4f commit 320a8da

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

docs/从template到DOM(Vue.js源码角度看内部运行机制).MarkDown

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ let vm = new Vue({
1515

1616
template是如何被编译成真实环境中可用的HTML的?
1717

18-
Vue指令又是执行的
18+
Vue指令又是如何执行的
1919

2020
带着这些疑问,我们从Vue的构造类开始看起。
2121

@@ -190,7 +190,7 @@ function initData (vm: Component) {
190190

191191
observe会通过defineReactive对data中的对象进行双向绑定,最终通过Object.defineProperty对对象设置setter以及getter的方法。getter的方法主要用来进行依赖收集,对于依赖收集不了解的同学可以参考笔者的另一篇文章[《依赖收集》](https://github.com/answershuto/learnVue/blob/master/docs/%E4%BE%9D%E8%B5%96%E6%94%B6%E9%9B%86.MarkDown)。setter方法会在对象被修改的时候触发(不存在添加属性的情况,添加属性请用Vue.set),这时候setter会通知闭包中的Dep,Dep中有一些订阅了这个对象改变的Watcher观察者对象,Dep会通知Watcher对象更新视图。
192192

193-
如果是修改一个数组的成员,该成员是一个对象,那只需要递归对数组的成员进行双向绑定即可。但这时候出现了一个问题,如果我们进行pop、push等操作的时候,push进去的对象根本没有进行过双向绑定,更别说pop了,那么我们如何监听数组的这些变化呢?
193+
如果是修改一个数组的成员,该成员是一个对象,那只需要递归对数组的成员进行双向绑定即可。但这时候出现了一个问题,如果我们进行pop、push等操作的时候,push进去的对象根本没有进行过双向绑定,更别说pop了,那么我们如何监听数组的这些变化呢?
194194
Vue.js提供的方法是重写push、pop、shift、unshift、splice、sort、reverse这七个[数组方法](http://v1-cn.vuejs.org/guide/list.html#变异方法)。修改数组原型方法的代码可以参考[observer/array.js](https://github.com/vuejs/vue/blob/dev/src/core/observer/array.js)以及[observer/index.js](https://github.com/vuejs/vue/blob/dev/src/core/observer/index.js#L45)
195195

196196
```javascript
@@ -888,4 +888,4 @@ attr只需要在create以及update钩子被调用时更新DOM的attr属性即可
888888
889889
至此,我们已经从template到真实DOM的整个过程梳理完了。现在再去看这张图,是不是更清晰了呢?
890890
891-
![](https://cn.vuejs.org/images/data.png)
891+
![](https://cn.vuejs.org/images/data.png)

0 commit comments

Comments
 (0)