Vue的一个陷阱
最近做项目,上线前一直有个bug,不知道是什么原因引起的,
vm.$set('needVerification', true); $('.verification-button').prop('disabled', true); $('.verification-button').addClass('verification-disab');
needVerification是让一个html元素显示出来的vue实例属性,但后面的两行代码一直没有执行,后来把第一行代码换成jquery的show()方法,就没问题了。
$('.verification').show(); $('.verification-button').prop('disabled', true); $('.verification-button').addClass('verification-disab');
怀疑是渲染线程的原因。
今天看vue官方2.0的文档,在深入响应式原理的一节看到,“你应该注意到 Vue 执行 DOM 更新是异步的,只要观察到数据变化,Vue 就开始一个队列,将同一事件循环内所有的数据变化缓存起来”。 就是这里解释的东西了。官方也给了相应的解决方案:为了在数据变化之后等待 Vue 完成更新 DOM ,可以在数据变化之后立即使用 Vue.nextTick(callback)
。
这一节文档可以多看几遍。