vue 监听滚动至底部

需求 初始化获得一部分数据 在滚动至底部时 通过传递当前数组的量 进行二次请求 获得完整数据列表

  • 首先监听scroll事件 绑定需要执行的方法:
this.$refs.theref.addEventListener('scroll', this.[方法]);
— theref: 获取需要滚动区域的ref
  • 因为组件内部 是通过数据渲染出的列表 考虑vue渲染规则 需要在元素渲染后执行scroll监听 否则获取不到对应dom节点
    所以需要配合使用 $nextTick()
this.$nextTick(()=>{
	this.$refs.theref.addEventListener('scroll', this.[方法]);
}
  • 此时考虑性能 需要添加节流
 function throttle (fn, wait) {
	  let  timer = null;
	  return function (...args) {
	    let context = this
	    if (timer) {
		      clearTimeout(timer);
		      timer = null;
	    }
	    timer = setTimeout(function () {
	      	fn.apply(context, args)
	    }, wait)
	  }
}
this.containerScrollFn = this.throttle(this.[方法], 200);
  this.$nextTick(()=>{
   this.$refs.theref.addEventListener('scroll', this.containerScrollFn);
})
  • 最后就是 需求的获取是否滚动至底部
isScrollBottom() {
      const container = this.$refs.theref;
      var scrollTop = container.scrollTop;
      var windowHeight = container.clientHeight;
      var scrollHeight = container.scrollHeight;
      if(scrollTop+windowHeight == scrollHeight){
        this.getBroadcast(this.theNum);
        this.isBottom = true;	// 滚动至底部
      }else{
        this.isBottom = false;	
      }
    },
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值