移动端下拉加载更多(h5,小程序)

news2024/11/27 18:34:44

1.h5,使用原生方式监听页面滚动下拉加载更多

<template>
  <div></div>
</template>

<script>
export default {
  data() {
    return {
      loadflag: true,
      maxpages: 0, //最大页码
      currentpage: 0, //当前页
      listData: [],
      config: {
        page: 1,
        pageSize: 15,
        total: 0,
        pages: 0,
      },
    }
  },
  created() {
    this.getList()
    window.addEventListener('scroll', this.handleScroll, true)
  },
  methods: {
    handleScroll() {
      const _this = this
      let scrollTop =
        document.documentElement.scrollTop || document.body.scrollTop
      //变量windowHeight是可视区的高度
      let windowHeight =
        document.documentElement.clientHeight || document.body.clientHeight
      //变量scrollHeight是滚动条的总高度
      let scrollHeight =
        document.documentElement.scrollHeight || document.body.scrollHeight
      //滚动条到底部的条件
      let data = scrollTop + windowHeight
      if (
        data == scrollHeight ||
        (scrollHeight - data <= 60 && _this.loadflag)
      ) {
        let currentpage = _this.currentpage
        let maxpages = _this.maxpages
        if (maxpages > currentpage && _this.loadflag) {
          _this.loadflag = false
          _this.config.page++
          _this.getList()
        }
      }
    },
    async getList() {
      let params = {
        page: this.config.page,
        pageSize: this.config.pageSize,
      }
      const res = await apiGet(posterGetBrochureList, params)
      this.isShowList = true

      if (res.code == 200) {
        const { total, records, current, pages } = res.data
        this.config.page = current //当前页
        this.config.pages = pages //总共多少页
        this.config.total = total //总条数
        this.maxpages = pages
        this.currentpage = current
        if (current <= pages) {
          this.loadflag = true
          this.listData = [...this.listData, ...records]
        } else {
          this.listData = records
        }
      }
    },
  },
  destroyed() {
    //离开页面的时候移除监听滚动事件,提高性能
    window.removeEventListener('scroll', this.handleScroll, true)
  },
}
</script>

<style lang="scss" scoped></style>

2.使用组件vant(van-list)

<template>
  <div></div>
</template>

<script>
export default {
  data() {
    return {
      listLoading: false, //分页加载
      finished: false, //分页是否加载完成
      listData: [],
      config: {
        page: 1,
        pageSize: 10,
        total: 0,
      },
    }
  },
  created() {
    this.getList()
  },
  methods: {
    //关键函数,监听下拉加载更多
    onLoad() {
      this.getList()
    },
    async getList() {
      const formData = {
        page: this.config.page,
        pageSize: this.config.pageSize,
      }
      const res = await apiGet(apigetqueryArchiveMatchedPageList, formData)
      if (res.code == 200) {
        const data = res.data
        this.listData = [...this.listData, ...data.records]
        this.listLoading = false
        //判断如果当前请求条数小于十条,就停止下拉加载
        if (data.records.length < 10) {
          this.finished = true
        }
        this.config.page++
      }
    },
  },
}
</script>

<style lang="scss" scoped></style>

3.uniapp使用scroll-view下拉加载更多

 <scroll-view
        class="law_main"
        scroll-y="true"
        @scrolltolower="lower"
        lower-threshold="50"
        refresher-enabled
        :refresher-triggered="triggered"
        @refresherrefresh="onRefresh"
      >
 <view v-for="(item, index) in dataList" :key="index" class="content">
  <view class="time">
    {{ item.createTime }}
  </view>
  <view class="score">
   {{ item.integral }}
    </view>
   </view>
   <!-- <view class="more_text" v-if="showMoreData">没有数据了...</view> -->
   </scroll-view>

<script>
import { exam } from '@/api/index.js'
export default {
  data() {
    return {
      dataList: [],
      pageNum: 1,
      pageSize: 20,
      totalPage: 1,
      triggered: false,
      isfreshing: false,
      showMoreData: false,
      title: '暂无数据',
    }
  },
  onShow() {
    this.getData()
  },
  methods: {
    lower(e) {
      if (this.pageNum < this.totalPage) {
        this.pageNum += 1
        this.getData()
      }
    },
    onRefresh() {
      if (!this.triggered) {
        if (this.isfreshing) return
        this.isfreshing = true
        if (!this.triggered) {
          this.triggered = true
        }
        this.showMoreData = false
        this.emptyData = false
        this.dataList = []
        this.pageNum = 1
        this.getData()
      }
    },
    getData() {
      let params = {
        current: this.pageNum,
        size: this.pageSize,
      }
      uni.showLoading({
        title: '正在加载',
      })
      try {
        exam.answerPaperUserPaperList(params).then((res) => {
          if (this.pageNum == 1) {
            this.dataList = res.data.records
            this.triggered = false
            this.isfreshing = false
          } else {
            this.dataList = this.dataList.concat(res.data.records)
          }
          // if (this.dataList.length == res.data.total && this.dataList.length > 20) {
          // 	this.showMoreData = true;
          // }
          res.data.total == this.pageSize
            ? (this.totalPage = 1)
            : (this.totalPage = parseInt(res.data.total / this.pageSize + 1))
          if (!this.dataList.length) {
            this.emptyData = true
            this.showMoreData = false
          }
          uni.hideLoading()
        })
      } catch (error) {
        uni.hideLoading()
      }
    },
  },
  onUnload() {},
}
</script>

tips:使用scroll-view下拉加载更多时,需要给一个高度,否则下拉加载将不生效 

4.uniapp监听页面触底加载更多onReachBottom

<script>
import { articlePageListApi } from '@/service/newpage.js'
import qs from 'qs'
export default {
  data() {
    return {
      params: {
        page: 1,
        pageSize: 10,
      },
      status: 'loadmore',// loadmore/loading / nomore
      artlist: [],
      hasmore: true,
    }
  },
  onLoad() {
    this.params.page = 1
    this.artlist = []
    this.hasmore = true
    this.getMylist()
  },
  //关键代码下拉刷新加载更多
  onReachBottom() {
    this.status = 'loading'
    if (this.hasmore) {
      this.status = 'loading'
      this.params.page++
      this.getMylist()
    } else {
      let timmer = setTimeout(() => {
        this.status = 'nomore'
      }, 1000)
    }
  },
  methods: {
    getMylist() {
      articlePageListApi(
        qs.stringify({
          ...this.params,
        }),
      ).then((res) => {
        if (res.data) {
          const { list } = res.data
          if (this.artlist?.length < list.total) {
            this.hasmore = true
            this.status = 'loadmore'
          } else {
            this.hasmore = false
            this.status = 'nomore'
          }
          this.artlist = [...this.artlist, ...list.records]
        }
      })
    },
  },
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity开发的Domino多米诺3D小游戏源码

Unity开发的Domino多米诺3D小游戏源码下载地址

计算机组成原理 - 总线、输入/输出系统

总线 考纲内容 总线的基本概念总线的组成及性能指标总线事务和定时 本章大多以选择题的形式出现&#xff0c;特别是总线的特点、猝发传输方式、性能指标、定时方式及常见的总线标准等 思考以下问题&#xff1a; 1、引入总线结构有什么好处? 2、引入总线结构会导致什么问题…

公司官网为何建议用OV SSL证书?如何申请?

随着网络安全威胁的日益增多&#xff0c;保护用户数据安全变得尤为重要。其中SSL&#xff08;Secure Sockets Layer&#xff09;证书成为了保障网站安全的关键技术之一。而在众多SSL证书中&#xff0c;OV&#xff08;Organization Validation&#xff09;SSL证书因其独特的优势…

JVM(九)深入解析Java字节码技术与执行模型

这篇文章深入探讨了Java字节码技术&#xff0c;包括字节码的简介、获取字节码清单的方法、解读字节码清单、查看class文件中的常量池信息、查看方法信息、线程栈与字节码执行模型、方法体中的字节码解读、对象初始化指令、栈内存操作指令、局部变量表、流程控制指令、算术运算指…

读取压缩文件

读取压缩文件 1、背景 D盘下面有一个zipTest1.zip压缩文件 1.1 zipTest里面的内容 1.2 zipTest中有三个文件夹dir1、dir2、dir3 1.3 每一个文件夹下都有一个.txt文件 2、要求 读取D盘下面zipTest1.zip压缩文件里的内容到D盘下面zipTest2 3、实现 public static void main…

Go语言使用cobra开发第一个命令行程序

源码下载 本教程源码下载地址&#xff1a;https://github.com/zhangdapeng520/zdpgo_cobra_examples 案例说明 实现一个简单的命令行程序&#xff0c;能够将输入的单词转换为大写。 使用演示 执行命令&#xff1a; go run .\main.go word -u -s hello输出结果&#xff1a…

XXE靶机教学

arp-scan -l主机发现 arp-scan -l 端口扫描 nmap -p- 192.168.48.139 服务探测 nmap -p80,5355 -sT -sC -sV 192.168.48.139 目录扫描 dirsearch -u http://192.168.48.139 访问robots.txt 发现两个可访问路径 burp抓包 测试是否存在xxe漏洞 <?xml version "1.…

超声波清洗机性价比高的型号有哪些?四款值得关注的高性能超声波清洗机推荐

如果你发现眼镜变得非常脏&#xff0c;甚至出现青铜色的污渍&#xff0c;那说明是时候清洁眼镜了&#xff01;很多人往往不在意这些细节&#xff0c;结果眼镜越戴越模糊&#xff0c;实际上这主要是因为镜片上的油污、手指皮肤的残留以及生活中的灰尘积累。如果不及时清洁&#…

【实现100个unity特效之15】最简单的方法使用shader graphs实现2d树叶草的随风摇摆效果

文章目录 前言新建shader graphs新建材质效果完结 前言 本文只是实现一个简单版本的2d树叶草随风摇摆的效果&#xff0c;如果你想要实现更加复杂的效果&#xff0c;包括2d互动草&#xff0c;你可以参考我之前的文章&#xff1a; 【推荐100个unity插件之24】实现2d交互式草树叶…

瑞熙贝通智慧库房物料管理系统v3.0

一、系统介绍 智慧库房物料软件是库房全流程管理中的管理方式&#xff0c;为强化库房在各个环节管理&#xff0c;提高库房物料管理的效率&#xff0c;针对库房物料管理中存在的问题&#xff0c;瑞熙贝通在库房物料管理工作等方面不断创新&#xff0c;在制度建设、管理流程设计…

2024,Java开发在中国市场还有发展前景吗?

随着2024年的到来&#xff0c;Java作为一种经典而强大的编程语言&#xff0c;依然在中国的软件开发市场中扮演着重要角色。然而&#xff0c;许多人对Java的未来发展前景持有不同的看法。让我们来探讨一下当前情况和未来的走向。 Java程序员真的过剩了吗&#xff1f; 2023年, 各…

深度学习 —— 个人学习笔记14(ResNet、DenseNet)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 二十八、残差网络&#xff08; ResNet &#xff09; import torch import torchvision import time from torch impo…

01:PID

前言 位式控制算法 位式控制算法是一种通过比较设定值&#xff08;SV&#xff09;和当前值&#xff08;PV&#xff09;来控制目标的方法。当PV小于SV时&#xff0c;输出高电平&#xff0c;执行部件工作&#xff1b;当PV大于或等于SV时&#xff0c;输出低电平&#xff0c;执行部…

Android 中compileSdk、minSdk、targetSdk 是干什么用的?

作为多年 Android 开发的老司机&#xff0c; compileSdk 、minSdk、targetSdk 都是经常见到&#xff0c;但其具体含义是什么&#xff1f;它们都是在什么场景下去使用的。回想起来还真不太能说得清楚。 背景 要想说清楚它们是干什么的&#xff0c;那就不得不说一下主角 Android …

每组中随机选一行

Excel的A列是分组&#xff0c;B列是明细。 AB1GroupName2AJohn3AJoe4AAnn5ASusan6AJames7AMary8AL .orraine9BJoseph10BSinead11BMichelle12BBreege13BTom14BFrancis15BConan16BCait17BRonan18BDeirdre19BAoife20BSile21BSarah22CLisa23CMicky24CPat25DMiles26DOlivia27DAvril…

骑行合并 轨迹合并

https://gpxt.beer5214.com/ 利用GPX轨迹合并工具提升长途骑行与徒步体验 对于长途骑行或长途徒步旅行的爱好者来说&#xff0c;记录和管理GPS轨迹是一项重要的活动。无论是为了后续分析自己的路线、分享经历还是为下一次冒险做准备&#xff0c;确保所有轨迹数据的完整性和连贯…

Spark轨迹大数据处理_scalaSpark代码实多点对多点的GIS点(经纬度点)的方位角计算

计算逻辑 1、我这个代码是基于一个简化方位角模型&#xff0c;忽略了地球的曲率&#xff0c;适用于距离相对较短的距离。因为业务相关&#xff0c;这个方位角两个点的距离计算不会超过1000km。 2、我这个方位角的计算逻辑&#xff1a;是从一个地点指向另一个地点的方向&#xf…

中小学创客室培养学生全面发展

随着时代的发展,教育也在飞速发展&#xff0c;教育决定着一个国家的未来&#xff0c;一个家庭的未来&#xff0c;一个人的未来&#xff0c;我国近年来大力鼓励科学教育&#xff0c;支持科学创新。因此&#xff0c;学校应该重视对学生的科学教育&#xff0c;尤其是处于思想启蒙阶…

使用Python编写文件重复检查器

在日常工作中&#xff0c;我们经常需要处理大量文件&#xff0c;但有时候会遇到文件重复的情况。为了有效管理文件并避免重复占用存储空间&#xff0c;我们可以编写一个简单的Python程序来检查文件夹中是否存在重复文件。 C:\pythoncode\new\getmd5offile.py 介绍 本文将介绍…

CSP 2019 第三题:纪念品

CSP 2019 第三题&#xff1a;纪念品 题目链接 题目&#xff1a; 题意&#xff1a; 数据给出能预测的天数&#xff0c;纪念品种类&#xff0c;持有金币。每天对金币进行买卖&#xff0c;求买卖后的金币最大值&#xff08;如何赚得更多&#xff09; 知识点考&#xff1a; 动态规划…