js实现滚轮滑动到底部自动加载

这里我们用vue实现(原生js相似),

这里我们用一个div当作一个容器;

<div class="JL" @scroll="onScroll" ref="inin">

        <div v-for="(item,index) in this.list" :key="index" >

                .....

        </div>

</div>



data(){

        return{
                //展示数据

                list:[],
                //是否正在加载
                isLoading:false,
                //是否无数据可加载
                isNoMore:false,
                page:""

        }

}

css样式

给上面div添加一个高度

.JL{

        height:200px;

        //自动生成滚动条

        overflow:auto;

}

在methods中编写我们的滚动条方法

onScroll(){

       // let innerHeight=document.querySelector("JL").clientHeight //js中使用

        //let scrollHeight=document.querySelector("JL").scrollHeight         //js中使用

        //let scrollTop=document.querySelector("JL").scrollTop //js中使用

        //因为我们用的时vue  不建议直接操作dom所以我们使用ref来获取虚拟dom

        let innerHeight=this.$refs.inin.clientHeight        //可视框高度

        let scrollHeight=this.$refs.inin.scrollHeight        //滚动框长度

        let scrollTop=this.$refs.inin.scrollTop                //滚动条滚动高度

        //我们使用接近底部就获取数据

        //因为我们滚轮事件会执行多次,所以我们添加判断让他一次只执行一次

        if(scrollHeight-30=scrollTop+innerHeight&&!isLoading&&!isNoMore){

                this.page++;//每次请求页码加一,从二开始,因为我们进来界面已经请求过一个了

                //获取请求,得到一个list2

                 this.isLoading=true

                //此时的data传递的就是正常查询需要的参数,以及分页的页码和数量

                (注意第一次请求得到的数据条数要足以撑开div生成滚动条,不然滚动条事件触发不了)

                axios.post(url,data,()=>{

        。。。

                var list2=请求得到的数据

                //判断是否还有数据

                if(list2.length<1){

                //此时说明数据库数据已经读取完毕,不在请求

                this.isNoMore=true;

                }

                this.list=[...this.list,...list2]//将得到的数据拼接到原来的list

                  this.isLoading=false

})
       

}

}

//以上就是前端需要的处理

//简单说一下后端

我们只需做一个分页通过sql  limit  或者spring里面的PageInfo进行分页

又因为此时移动端做下滑加载 就不需要分页的一些page进行页面跳转,所以我们只需要从后端返回查询到的list

如果用的pageInfo会得到一个PageInfo的对象,我们只需要通过getList()方法只返回数据列表就行


http://www.niftyadmin.cn/n/4950198.html

相关文章

分布式基础

1、分布式简介 1.1、分布式定义 分布式系统是一个硬件或软件组件分布在不同的网络计算机上&#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统。 1.2、分布式特点 分布性&#xff1a;分布式系统中的多台计算机都会在空间上随意分布&#xff0c;同时&#xff0c;机器…

SpringBoot + Vue 微人事(十)

职位管理前后端接口对接 先把table中的数据展示出来&#xff0c;table里面的数据实际上是positions里面的数据&#xff0c;就是要给positions:[] 赋上值 可以在methods中定义一个initPosition方法 methods:{//定义一个初始化positions的方法initPositions(){//发送一个get请求…

利用Opencv实现人像迁移

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下如何使用Opencv实现人像迁移&#xff0c;欢迎大家一起参与探讨交流~ 本文目录&#xff1a; 一、实验要求二、实验环境三、实验原理及操作1.照片准备2.图像增强3.实现美颜功能4.背景虚化5.图像二值化处理6.人…

视频播放实现示例Demo

学习链接 vuespringboot文件分片上传与边放边播实现 同步加载、播放视频的实现 ---- range blob mediaSource 通过调试技术&#xff0c;我理清了 b 站视频播放很快的原理 MSE (Media Source Extensions) 上手指南 浅聊音视频的媒体扩展&#xff08;Media Source Extension…

【目标检测中对IoU的改进】GIoU,DIoU,CIoU的详细介绍

文章目录 1、IoU2、GIoU(Generalized Intersection over Union)3、DIoU4、CIoU 1、IoU IoU为交并比&#xff0c;即对于pred和Ground Truth&#xff1a;交集/并集 1、IoU可以作为评价指标使用&#xff0c;也可以用于构建IoU loss 1 - IoU 缺点&#xff1a; 2、对于pred和GT相…

使用GUI Guider工具开发嵌入式GUI应用(6)-切换多screen换场景

使用GUI Guider工具开发嵌入式GUI应用&#xff08;6&#xff09;-切换多screen换场景 本节将展示使用GUI Guider实现切换显示页面功能。 这里设计的用例是&#xff1a; 创建3张页面&#xff0c;screen_0,screen_1和screen_2。分别在每个页面上中放置一个Label&#xff08;最…

精准控温在生物样本转运过程中的重要意义

生物样本在转运过程中&#xff0c;操作人员往往会通过专业的设备及规范的流程来避免温度的剧烈变化&#xff0c;防止样本活性降低或丧失&#xff0c;为样本提供安全的转运环境。有效控制转运环境的温度对生物样本的安全至关重要。 如果满足不了控温需求&#xff0c;样本的安全…

flink jira 提交开源bug

注册apache issue账号,并申请flink空间的权限后. 提问题/bug 查看已经提交的问题: