vm.$nextTick()

来源:互联网 发布:js下拉框联动 编辑:程序博客网 时间:2024/06/05 20:12

vm.$nextTick

简单说,因为DOM至少会在当前tick里面的代码全部执行完毕再更新。所以不可能做到在修改数据后并且DOM更新后再执行,要保证在DOM更新以后再执行某一块代码,就必须把这块代码放到下一次事件循环里面,比如setTimeout(fn, 0),这样DOM更新后,就会立即执行这块代码。

//改变数据vm.message = 'changed'//想要立即使用更新后的DOM。这样不行,因为设置message后DOM还没有更新console.log(vm.$el.textContent) // 并不会得到'changed'//这样可以,nextTick里面的代码会在DOM更新后执行Vue.nextTick(function(){    console.log(vm.$el.textContent) //可以得到'changed'})



更详细参考这里:深入响应式原理#异步更新队列
0 0
原创粉丝点击