vue中better-scroll 网络数据过慢,不能滚动问题
1、原因:
网络比较慢,请求的图片比较多,,导致图像的高度没有实际的显示,因此better-scroll计算不上图像的高度,因此导致BScroll无法正常滚动。
2、解决方法 一
在vuex定一个变量,给加载的图片添加load事件,每一次加载完成后改变vuex中的变量,在页面中监听vuex中该变量的变化,每一次变化都执行this.$refs.scroll.refresh()
代码:
1、vuex
state: { itemImgLoad:0 }, mutations: { setItemImgLoad(state){ state.itemImgLoad=state.itemImgLoad+1 } },
2、图片组件
<img :src="goodsItem.show.img" alt="" @load="imgLoad"> methods:{ imgLoad(){ this.$store.commit('setItemImgLoad'); } }
3、父页面
computed: { watchVuex() { return this.$store.state.itemImgLoad; } }, watch: { // 监听vuex(数据变化) watchVuex() { // 重新渲染 this.$refs.scroll.refresh(); } },
3、解决方法二(vue2.x)
利用事件总线
1、代码:
1、main.js Vue.prototype.$bus=new Vue() 2、图片组件 this.$bus.$emit('事件名称') 3、父页面 this.$bus.$off('事件名称',()=>{ this.$refs.scroll.refresh(); })