问题出现
在做vue的商城小项目的时候,为了解决原生滚动的问题而使用了Better-Scroll插件。但是使用时发现Better-Scroll的高度计算出了点问题,导致整个内容无法滚动。
原因
所有的图片都是异步加载的,所以当Better-Scroll计算内容高度时图片的加载可能还没有完成,导致高度计算错误,从而出现内容高度没问题但是却无法滚动的情况。
解决方法
尝试在创建Better-Scroll对象时使用nextTick()方法来解决该问题,但是没有效果,所以又尝试给了一个200ms延迟,解决了该问题,但是当尝试将200ms降为20ms时发现图片还是没有加载完。
正确的解决方法应该是在图片异步加载完成后再创建Better-Scroll对象或是调用refresh方法。
在createdmounted钩子中使用load事件来监听每一张图片的加载,一旦有图片加载完成就向事件总线提交一个事件,再在其他组件中进行事件的响应处理。
初始化事件总线:
Vue.prototype.$bus = new Vue()
使用一个Vue实例充当事件总线