pc端vue 滚动到底部翻页
html:
<div class="list" ref="scrollTopList">
<div class="listsmall" v-for="(item,index) of list" :key="index" @click="getDeviceInfo(item.id)">
<span class="state" :class="{'state1':item.status==1,'state0':item.status==0,'state2':item.status==2,'state3':item.status==3}"></span>
<span class="text textcolor">【{{item.code||item.name}}】</span>
<span class="text">{{item.name}}</span>
</div>
</div>
js:
先写滚动事件
handleScroll(){
                let scrollTop = this.$refs.scrollTopList.scrollTop,
                clientHeight = this.$refs.scrollTopList.clientHeight,
                scrollHeight = this.$refs.scrollTopList.scrollHeight,
                height = 50; //根据项目实际定义
                if(scrollTop +clientHeight >= scrollHeight - height){
                    if(this.pageSize > this.total){
                        return false
                    }else{
                        this.pageSize = this.pageSize +10 //显示条数新增
                        this.getpageList() //请求列表list 接口方法
                    }
                }else{
                    return false
                }
            },
throttle(func, wait) {
                let lastTime = null
                let timeout
                return () => {
                    let context = this;
                    let now = new Date();
                    let arg = arguments;
                    if (now - lastTime - wait > 0) {
                        if (timeout) {
                            clearTimeout(timeout)
                            timeout = null
                        }
                        func.apply(context, arg)
                        lastTime = now
                    } else if (!timeout) {
                        timeout = setTimeout(() => {
                            func.apply(context, arg)
                        }, wait)
                    }
                }
            },
mounted中调用
mounted(){
this.$refs.scrollTopList.addEventListener("scroll",this.throttle(this.handleScroll,500),true)
},
//-------------------------------------------------------------------------------------------第二种写法
html:
添加滚动事件
<div class="tablelist-box" @scroll="scrollEvent($event)">
<div
class="tablelist"
:class="{'active':listDevicesDetailIndex==index}"
v-for="(item,index) of deviceList"
:key="index"
v-if="deviceList.length !== 0"
@click="deviceDetail(item,index)"
>
<span class="tablelist-status">
<i
:class="{zx:item.status==1,lx:item.status==2, wjh:item.status==0,gj:item.status==3}"
></i>
</span>
<span class="tablelist-bg">{{item.code != null ?item.code:"/"}}</span>
</div>
<div class="list-more" v-show="!deviceListIsFinish">{{deviceTip}}</div>
<div class="list-more" v-show="deviceListIsFinish">{{deviceTip}}</div>
</div>
css:
tablelist-box{
  height: //根据实际项目取
  overflow:auto //必须 不然判断有问题
}
css 定义
js
写入滚动事件
scrollEvent(e) {
      if (e instanceof Event) {
        let el = e.target;
        let scrollTop = el.scrollTop;
        // 获取可视区的高度
        let clientHeight = el.clientHeight;
        // 获取滚动条的总高度
        let scrollHeight = el.scrollHeight;
        let height = 50;
        //到底了
        // console.log(this.deviceListIsLoad, this.deviceListIsFinish);
        // console.log(scrollTop, clientHeight, scrollHeight);
        //是否继续加载且已完成加载
        if (
          scrollTop + clientHeight >= scrollHeight &&
          this.deviceListIsLoad &&
          !this.deviceListIsFinish
        ) {
          // 把距离顶部的距离加上可视区域的高度 等于或者大于滚动条的总高度就是到达底部
          this.deviceListIsLoad = true;
          console.log("到底了");
          setTimeout(() => {
            this._deviceListPage();
          }, 1000);
        }
      }
请求列表的处理
 _deviceListPage() {
      let params = {
        pageSize: this.devicePageSize,
        pageNum: this.devicePageNum,
        kw: "", //查询条件(通配查询条件)
        type: this.deviceType, //设备类型(下拉)2.1.6接口获取
        code: this.deviceCode, //设备编号
        areaId: this.deviceareaId, //位置区域
        status: this.deviceStatus, //状态 1:在线(正常),0:未激活,2已离线,3.告警
        imei: "" //imei编号
      };
      deviceListPage(params).then(res => {
        if (res.code == 200) {
          this.devicePageTotal = res.body.total;
          this.devicePageSize = res.body.pageSize;
          this.devicePageNum = res.body.pageNum;
          this.devicePageTotalPages = parseInt(
            (this.devicePageTotal + this.devicePageSize - 1) /
              this.devicePageSize
          );
          if (this.devicePageTotal == 0) {
            // console.log("没有数据");
            //没有数据
            this.deviceListnodata = true;
            this.deviceListIsLoad = false;
            this.deviceListIsFinish = true;
            this.devicePageNum = 1;
            this.deviceTip = "暂无数据";
            return false;
          }
          this.deviceList = this.deviceList.concat(res.body.datas);
          // console.log(this.devicePageNum, this.devicePageTotalPages);
          if (this.devicePageNum == this.devicePageTotalPages) {
            //没有更多
            this.deviceListIsLoad = false;
            this.deviceListIsFinish = true;
            this.devicePageNum = 1;
            this.deviceTip = "没有更多了~";
            // console.log("没有更多了");
          } else {
            // console.log("下一页");
            //下一页
            this.deviceListIsLoad = true;
            this.deviceListIsFinish = false;
            this.devicePageNum++;
            this.deviceTip = "正在加载中~";
          }
          // console.log("deviceList", this.deviceList);
        } else {
          // this.deviceList = [];
          this.deviceListIsLoad = false;
          this.deviceListIsFinish = true;
          this.devicePageNum = 1;
          this.deviceTip = "数据加载失败~";
        }
      });
    },
return中的定义
devicePageSize: 10, //每页显示
devicePageNum: 1, //当前页
devicePageTotal: 0, //总条数
devicePageTotalPages: 0, //总页数
deviceListIsFinish: false, //是否加载完成
deviceListIsLoad: false, //是否加载更多
deviceListnodata: false, //是否有数据
deviceTip: "",
pc端vue 滚动到底部翻页的更多相关文章
- 基于vue实现上下滑动翻页效果
		
18年年底的时候,一直在做年度报告的H5页面,因为项目需要,需要实现上下滑动翻页,并且上滑的页面比正常页面的比例要缩小一定比例. 效果类似于http://www.17sucai.com/pins/de ...
 - 转载  vue-awesome-swiper - 基于vue实现h5滑动翻页效果
		
说到h5的翻页,很定第一时间想到的是swiper.但是我当时想到的却是,vue里边怎么用swiper?! 中国有句古话叫:天塌下来有个高的顶着. 在前端圈里,总有前仆后继的仁人志士相继挥洒着热汗(这里 ...
 - 使用scrollpagination实现页面底端自动加载无需翻页功能
		
当阅读到页面最底端的时候,会自动显示一个"加载中"的功能,并自动从服务器端无刷新的将内容下载到本地浏览器显示. 这样的自动加载功能是如何实现的?jQuery的插件 ScrollPa ...
 - 适用于移动端、PC 端 Vue.js 图片预览插件
		
1.安装:npm install --save vue-picture-preview 2.使用: (1)入口文件中main.js中全局引入: import Vue from 'vue' import ...
 - js实现移动端手指左右上下滑动翻页效果
		
var ele = document.getElementsByClassName("img-box")[0]; var beginX, beginY, endX, endY, s ...
 - 【bootstrapV3】移动端和PC端的 滚动监听
		
1.本代码适用于 bootstrap V3 的 页面滚动监听 2.效果: 3.代码: <!DOCTYPE html> <html lang="zh-CN"> ...
 - 记录一下,PC端vue开发常用框架,已经用过elementUI和iview 接下来尝试另一个Muse-UI 喜欢它的点击效果
		
官网地址: https://muse-ui.org/#/zh-CN/installation
 - Atitit.pagging  翻页功能解决方案专题 与 目录大纲 v3 r44.docx
		
Atitit.pagging 翻页功能解决方案专题 与 目录大纲 v3 r44.docx 1.1. 翻页的重要意义1 1.2. Dep废弃文档 paip.js翻页分页pageing组件.txt1 ...
 - Atitit.列表页面and条件查询的实现最佳实践(2)------翻页 分页 控件的实现java .net php
		
)------翻页 分页 控件的实现java .net php 1. 关于翻页有关的几大控件::搜索框控件,显示表格控件,翻页器,数据源控件.. 1 2. 翻页的显示格式:: 1 2.1. 通常ui- ...
 
随机推荐
- flutter Radio单选框
			
单选框,允许用户从一组中选择一个选项. import 'package:flutter/material.dart'; class RadioDemo extends StatefulWidget { ...
 - ISO/IEC 9899:2011 条款6.5.8——关系操作符
			
6.5.8 关系操作符 语法 1.relational-expression: shift-expression relational-expression < shift-expr ...
 - 十一、postman接口测试(安装nodejs和npm)
			
cmder安装:https://cmder.net/ node安装:https://nodejs.org/zh-cn/ 打开cmd命令,在命令提示窗输入 npm install -g cnpm --r ...
 - 004-行为型-06-命令模式(Command)
			
一.概述 是一种数据驱动的设计模式 请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令. 将请求封装成对象,以便使用不同的请 ...
 - mac QQ 语音或视频时其他声音变小的解决办法
			
在使用MacBook的时候,使用QQ视频的同时 看视频 听歌都会发现,QQ视频声音正常,其他软件的声音会很小很小.怎么解决呢,首先 开启QQ后,在视频之前: 1.打开终端输入以下命令. printf ...
 - MySQL中事务的隔离级别
			
MySQl InnoDB存储引擎实现SQL标准的4种隔离级别(RU,RC,RR,serializable),用来限定事务内外的哪些改变时可见的,哪些时不可见的.低级别的隔离级一般支持更高的并发处理,并 ...
 - 【CSS3练习】3D盒子制作
			
先发个3D盒子最终效果图 在线效果预览:http://dtdxrk.github.io/game/css3-demo/box-3d.html 制作步骤1:创建基本结构 分布把6个面定义到3×3的画布上 ...
 - MYSQL:基础——索引原理及慢查询优化
			
MYSQL:基础——索引原理及慢查询优化 索引的数据结构 索引的数据结构是B+树.如下图所示,B+树的节点通常被表示为一组有序的数据项和子指针.图中第一个节点包含数据项3和5,包含三个指针,第一个指针 ...
 - docker 在 centos7.* 上的部署及问题解决
			
最近尝试搭建docker 环境,其实个人是比较喜欢“菜鸟学习系列”的知识的,怎奈它的讲解是以Ubuntu为主的,最后找到一个搭建学习系列,感觉写的很好,主要是页面风格清晰明了,遂决定按照此教程学习搭建 ...
 - 钩子(hook)
			
钩子(hook)编程 钩子(hook)编程 一.钩子介绍 1.1钩子的实现机制 钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术.下图是windows ...