关于Better-Scroll的高度计算问题

    科技2025-12-16  16

    问题出现

    在做vue的商城小项目的时候,为了解决原生滚动的问题而使用了Better-Scroll插件。但是使用时发现Better-Scroll的高度计算出了点问题,导致整个内容无法滚动。

    原因

    所有的图片都是异步加载的,所以当Better-Scroll计算内容高度时图片的加载可能还没有完成,导致高度计算错误,从而出现内容高度没问题但是却无法滚动的情况。

    解决方法

    尝试在创建Better-Scroll对象时使用nextTick()方法来解决该问题,但是没有效果,所以又尝试给了一个200ms延迟,解决了该问题,但是当尝试将200ms降为20ms时发现图片还是没有加载完。

    正确的解决方法应该是在图片异步加载完成后再创建Better-Scroll对象或是调用refresh方法。

    在createdmounted钩子中使用load事件来监听每一张图片的加载,一旦有图片加载完成就向事件总线提交一个事件,再在其他组件中进行事件的响应处理。

    初始化事件总线: Vue.prototype.$bus = new Vue() 使用一个Vue实例充当事件总线

    Processed: 0.016, SQL: 9