H5app上滑加载/触底加载数据

        做h5app会经常用到这种加载方式,今天记录一下具体的实现方式:

话不多说开始展示

这个加载中用的vant组件Vant 2 - 轻量、可靠的移动端组件库 (gitee.io)

         先说一下需求,页面滑动到底部之后显示加载中,然后发起请求拿到第二页数据push到原来的data数组中,加载中组件隐藏,然后渲染数据。

首先给需要滚动的div添加滚动事件(别忘了给div设置 overflow:scroll; 和 height:100%; )

 然后获取滚动到底部的距离

loadMore(event){
    this.scrollTop = event.target.scrollTop; //获取滚动高度可以做详情页回滚使用
	//这里scrollBottom(距离底部距离)=scrollHeight(盒子总高度) - scrollTop(滚动高度) -clientHeight(盒子内部高度)
 	const scrollBottom =event.target.scrollHeight -event.target.scrollTop - event.target.clientHeight;
    //total(总数据条数) pageNum(数据页) pageSize(每页数据条数)
    if (this.total > this.pageNum * this.pageSize) {
        //scrollBottom距离底部小于或等于30的时候就开始获取第二页数据
        if(scrollBottom <= 30){
            //使页数加一然后在请求数据
            this.pageNum += 1;
            //获取数据时使用的是push所以每次都会把新一页的数据添加到数组里面
            this.getData();
        }
    }else{
       console.log("没有更多数据了")
    }
}

在这里添加一下修改一下

上面加载是可行的但是有时滑到底部之后会触发多次请求

clickconut:0,
starTime:0

//添加这些,0.3秒的时候只执行一次
var currentTime = new Date().getTime()
if(currentTime - this.starTime > 300){
    this.clickconut = 0
    this.starTime = currentTime 
}
this.clickconut++
if(this.clickconut == 1){
    this.pageNum += 1
    this.getData()
}


这样就可以完美解决了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值