DOM的改變,會(huì)觸發(fā)事件。事件是同步執(zhí)行的。
數(shù)據(jù)的更新,不會(huì)立刻觸發(fā)視圖的更新。在Vue中,DOM的變動(dòng)是異步的。
如果想要得到數(shù)據(jù)更新后的dom對(duì)象,并執(zhí)行操作。初始化時(shí)可以寫在mounted中,此外可以寫在nextTick這個(gè)api中。
Vue.nextTick(callback,執(zhí)行上下文環(huán)境的this) --接收兩個(gè)參數(shù)
Vue.nextTick里面有三個(gè)重要變量:callback(回調(diào)) pending(是否正在執(zhí)行回調(diào)) timefunc(觸發(fā)回調(diào)的函數(shù))
<div ref="msgDiv">{{msg}}</div>
<div v-if="msg1">Message got outside $nextTick: {{msg1}}</div>
<div v-if="msg2">Message got inside $nextTick: {{msg2}}</div>
<div v-if="msg3">Message got outside $nextTick: {{msg3}}</div>
<button @click="changeMsg">
Change the Message
</button>
</div>
<script>
new Vue({
el: '.app',
data: {
msg: 'Hello Vue.',
msg1: '',
msg2: '',
msg3: ''
},
methods: {
changeMsg() {
this.msg = "Hello word."
this.msg1 = this.$refs.msgDiv.innerHTML
this.$nextTick(() => {
this.msg2 = this.$refs.msgDiv.innerHTML
})
this.msg3 = this.$refs.msgDiv.innerHTML
}
}