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();
})

 

posted @ 2020-12-03 19:38  (⊙o⊙)买噶  阅读(317)  评论(0编辑  收藏  举报