解决Vue项目首页Better-Scroll滚动区域的小问题

已知:better-scroll在决定有多少区域可以滚动时,是根据scrollerHeight属性决定的。
问题描述:

  • scrollHeight属性是根据放better-scroll的content中的子组件的高度计算的。
  • 但是在better-scroll会计算页面的高度,这时候如果页面中的图片还没加载完成则会出现计算的高度与实际不相符
  • 后来图片加载进来后有了新的高度,但是scrollHeight并没有进行更新。
  • 所以滚动出现问题

解决思路:

  • 用@load监听图片的加载,加载一张图片则调用refresh() 方法刷新一下better-scroll使之重新计算需要滚动的页面高度,监听图片两种方法:1.原生的js监听图片:img.onload = function() {}; 2.Vue中监听img元素:@load = ‘方法’

  • -但是呢,如何让首页知道这个监听图片加载的行为呢?非父子组件发送自定义对象也不太方便,这时候用到一个事件总线的东西,vue可以作为事件总线,事件总线可以监听事件的变化,

    第一步:在main.js中的Vue的原型上定义:Vue.propotype.$bus = new Vue()

    第二步:发送事件总线:this. b u s . bus. bus.emit(‘事件’,参数)

    第三步:接收事件总线: this. b u s . bus. bus.on(‘事件’,回调函数(参数))

但是,加载一张图片就刷新一次,这样频繁地刷新也不好,会造成性能浪费,这时候需要给refresh方法加一个防抖动的方法。

【问题解决…】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值