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) 。

 这一节文档可以多看几遍。

posted @ 2016-11-24 14:11  姜瑞涛  阅读(794)  评论(0编辑  收藏  举报