首先来看问题:当点击按钮的时候执行msgFn这个方法,毋庸置疑,此时视图的值应该为3333,按照常理,此时后台打印出来的也应该是3333。
但是事实是这样吗?我们接着往下看。
这是打印出来的DOM值:
视图显示的却是3333,然而打印出来的确实原先的“前端小姐姐”。
这是什么原因呢?
其实很简单,就是vue执行DOM的更新是异步的,不是我们想的同步执行。在vue中,只要观察到data里面的数据改变了,它就会把更新DOM这件事缓存在事件模型(事件循环)里面。它这样做是为了避免不必要的多次计算和多次重复的操作(比如重复点击)。所以在数据更新后,它不会立即执行,只会等到清空这个事件后才会去执行。
如果不想被vue这种事件支配,而是想立即更新,或者立即更新后搞点什么事情,那么我们就要用到this.$nextTick()这个方法。
作用:处理vue中DOM的异步更新
简单理解:当数据更新时,在DOM渲染之后,会自动执行callback函数
用法:this.$nextTick(callback)
使用this.$nextTick()后:
js:
视图和后台:
完结~~~