Vue 实现响应式,并不是数据发生变化之后 DOM 立即变化, 而是按 一定的策略 进行 DOM 的更新。
$nextTick()
是 DOM 更新循環「結束」時觸發的方法,
http://jsbin.com/ciguqej/edit?html,console,output
在修改数据之后使用 $nextTick,可以获取「更新后的 DOM」。
new Vue({
methods: {
example: function () {
// 0. 進入 function
this.message = 'changed'
// 1. 改變 data 數據
// 2. DOM 還沒更新
this.$nextTick( function () {
// 3. DOM 現在更新、立即執行此 function
// `this` 綁定到當前實例 (example)
this.doSomethingElse()
})
// 4. 此行位於程式末尾
}
}
})
// 順序為 0-1-2-4-3
考虑这样一种场景, 你有一个 jQuery 插件, 希望在 DOM 元素中某些属性发生变化之后,重新应用该插件, 这时候就需要在 $nextTick 的回调函数中执行重新应用插件的方法。
補充:Vue 生命周期 (但沒提到 $nexttick,應該是在 updatebed 附近)