实现在vue项目中通过滚动条来滑动加载数据

前言:
我使用vue+elementui开发前端页面时,使用elementui自带的滑动加载数据的功能并不是那么好用,于是就有了下面的代码。

1、在页面加载的时候既要初始化页面的数据,又要初始化滑动加载的代码

mounted(){
  this.init ();
  window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy(){
  window.removeEventListener('scroll', this.handleScroll, false);
},
methods: {
	init () {
      this.oneData={};
      this.dataList=[];
      this.pageNumber=1;
      this.pageSize=10;
      this.pageTotal=0;
      this.getList()
    },
	handleScroll(){
	  // 变量scrollTop是滚动条滚动时,距离顶部的距离
	  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
	  // 变量windowHeight是可视区的高度
	  var windowHeight = document.documentElement.clientHeight || document.body.clientHeight
	  // 变量scrollHeight是滚动条的总高度
	  var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight
	  // 滚动条到底部的条件
	  if (scrollTop + windowHeight - scrollHeight>-10) {
	    if (!this.lastPage) {
	      this.pageNumber += 1 // 页数+1
	        // 重新加载数剧
	        this.getList()
	    }
	  }
	},
	// 获取列表信息
	getList () {
	 this.$http.get('/api/quarterlyreport/page?page='+this.pageNumber+'&limit='+this.pageSize).then(({ data: res }) => {
	   if (res.code !== 0) {
	     return this.$message.error(res.msg)
	   }
	   var list=res.data.list;
	   if(this.pageNumber==1){
	     this.oneData=list[0];
	     this.dataList=list.slice(1,list.length);
	   }else{
	     this.dataList.push(...list);
	   }
	   this.pageTotal=res.data.total;
	   this.lastPage = list.length<this.pageSize;
	 }).catch(() => {})
	}
}

2、设置页面高度

.mod-home {
  height: calc(100vh);
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火柴有猿

您的鼓励,将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值