小程序下拉刷新,加载更多数据,移动端分页

news2024/11/18 16:26:35

文章目录

    • 页面结构图
    • WXML页面代码
    • js代码
    • wxss代码
    • 总结
    • 备注

参考:https://juejin.cn/post/7222855604406796346

页面结构图

一般页面就4个结构:最外滚动层、数据展示层、暂无数据层、没有更多数据层。
如图:
在这里插入图片描述

WXML页面代码

<scroll-view style="height:{{containerHeight}}rpx" scroll-y lower-threshold="100rpx" bindscrolltolower="onReachBottom">
    <block wx:for='{{records}}' wx:key='this'>
      <view class='list-item' data-index='{{index}}'>
        <!-- 内容 -->
        <view>{{item.name}}</view>
      </view>
    </block>
    <block wx:if="{{isLoadEnd&&records.length==0}}">
      <view class="center-both" style="height:100%">
        <view class="col-center">
            <view class="empty-hint">未搜索到单位~</view>
        </view>
      </view>
    </block>
    <view wx:if="{{isLoadComplete&&records.length!=0}}" class="nomore">没有更多数据了</view>
</scroll-view>

js代码

var app = getApp()

Page({
  /**
   * 页面的初始数据
   */
  data: {
    //容器高度 = 屏幕高度 - 顶部高度 - 底部高度 - 28padding - 搜索栏
    // containerHeight: app.globalData.screenHeight - app.globalData.topHeight - app.globalData.bottomHeight - 28 - 96,
    containerHeight:1300,
    pageSize: 20, //请求一页的数据数目
    currentPage: 1, //当前页数
    currentparameter: '', //要搜索的数据
    isLoadEnd: false, //是否单次加载结束
    isLoadComplete: false, //是否获取到全部数据
    value: "",
    records: [], //数据
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.startPage('')
  },

  getData(searchKey) {
    wx.showNavigationBarLoading() // 在标题栏中显示加载
    // 制作假数据
    this.fakeRequest()
  },

  fakeRequest() {
    let that = this
    setTimeout(() => {
      let ressult = []
      --app.globalData.retryCount
      for (let i = 1; i <= 20; ++i) {
        if (i > 10 && app.globalData.retryCount < 0) {
          break
        }
        ressult.push({
          name: '小明' + i
        })
      }
      //将新数据加进去,通知本次加载结束
      let records = that.data.records
      if (that.data.currentPage == 1) {
        records = ressult
      } else {
        ressult.forEach(element => {
          records.push(element)
        });
      }
      that.setData({
        records: records,
        isLoadEnd: true,
        isLoadComplete: ressult.length < that.data.pageSize
      })
      // 数据成功后,停止下拉刷新
      wx.hideLoading()
      wx.stopPullDownRefresh();
      wx.hideNavigationBarLoading()
    }, 1500);
  },

  //搜索数据
  startPage(searchKey) {
    this.setData({ // 重置数据
      records: [],
      currentPage: 1,
      currentparameter: searchKey,
      isLoadEnd: false,
      isLoadComplete: false,
    })
    app.globalData.retryCount = 2 //测试假数据
    this.getData(searchKey)
  },

  //下一页
  nextPage() {
    this.setData({
        currentPage: ++this.data.currentPage,
        isLoadEnd: false,
    })
    wx.showLoading({
        title: '正在加载..'
    })
    this.getData(this.data.currentparameter)
  },

  //滚动到底部加载
  onReachBottom() {
    //上拉加载中,或者数据加载结束,不应该触发下一页
    if (this.data.isLoadEnd && !this.data.isLoadComplete) {
      this.nextPage()
    }
  },

  onSearch(e) {
    //关键词搜索
    this.startPage(e.detail)
  },
})

wxss代码

.search {
  height: 96rpx;
}

.empty-hint {
  font-size: 28rpx;
  font-family: PingFangSC-Regular, PingFang SC;
  font-weight: 400;
  color: #949494;
  line-height: 40rpx;
  margin-top: 48rpx;
}

.nomore {
  width: 100%;
  box-sizing: border-box;
  text-align: center;
  margin: 28rpx 0 0;
  
  font-size: 26rpx;
  font-family: PingFangSC-Regular, PingFang SC;
  font-weight: 400;
  color: #616161;
  line-height: 36rpx;
}

.list-item {
  background: #FFFFFF;
  border-radius: 12rpx;
  margin:  28rpx 32rpx 0;
  padding: 24rpx 32rpx;
  box-sizing: border-box;
}

总结

以上代码只是简单的demo,重点要搞清的是:

  1. 页面结构
  2. 获取数据的时候标签isLoadEndisLoadComplete以及数据数量和pagesize的比较

备注

js代码中有wx.stopPullDownRefresh(); ,这里大概讲一下。

这个API表示的是停止当前页面下拉刷新,因为其他代码懒粘了这里就只讲一下用法。

具体使用:

  1. app.js 中window 中添加:"enablePullDownRefresh": true,
  2. 指定页面的js文件中使用onPullDownRefresh(){} 即可;
  3. 需要马上停止,使用wx.stopPullDownRefresh()

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

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

相关文章

Zynq7000系列FPGA中的中断

本文介绍Zynq7000系列FPGA中的系统级中断环境和中断控制器的功能&#xff08;见图7-1&#xff09;。 专用、共享和软件中断 每个CPU都有一组专用外围中断&#xff08;PPI&#xff0c;private peripheral interrupts&#xff09;&#xff0c;使用banked 寄存器可以对这些中断进…

2024年生物技术与食品科学国际会议(ICBFS 2024)

2024 International Conference on Biotechnology and Food Science 2024年生物技术与食品科学国际会议 【会议信息】 会议简称&#xff1a;ICBFS 2024 大会地点&#xff1a;中国厦门 会议邮箱&#xff1a;icbfssub-paper.com 审稿结果&#xff1a;投稿后3日左右 提交检索&…

AI视频教程下载-ChatGPT 生产力 + 时间管理

ChatGPT Productivity Time Management. ChatGPT Productivity ChatGPT 显著提升生产力 不寻常的时间管理技巧。ChatGPT 工作&#xff0c;Chat GPT 自动化&#xff0c;ChatGPT 2023&#xff01; 对关于ChatGPT的讨论感到好奇&#xff0c;想知道如何利用它为自己带来好处吗&a…

VTable导出当前页和导出所有页数据

表格导出的是当前显示的表格&#xff0c;如果是分页表格想导出全部的数据话。有两种方法可以实现 表格先显示的全量数据&#xff0c;导出后再恢复当前页。新建一个隐藏的表格实例显示全量数据导出这个隐藏的表格实例。 下面是全量代码&#xff1a; <template><div&…

【笔记】从零开始做一个精灵龙女-拆uv阶段

目录 先回顾一下拆uv的基础流程吧 肩部盔甲分UV示例 手环UV部分 腰带UV部分 其它也差不多&#xff0c;需要删掉一半的就先提前删掉一半&#xff0c;然后把不需要的被遮挡的面也删掉 龙角UV 胸甲UV 侧边碎发UV 马尾UV 脸部/耳朵UV 特殊情况&#xff1a;如果要删一半再…

2024南京国际自有品牌产品博览会

展会名称&#xff1a;2024南京国际自有品牌产品博览会 展会时间&#xff1a;2024年10月11-13日 展会地点&#xff1a;南京国际博览中心 展览规模&#xff1a;36000平米 详询主办方陆先生 I38&#xff08;前三位&#xff09; I82I&#xff08;中间四位&#xff09; 9I72&…

Vmvare12安装CentOS7.6

Vmvare12安装 注意事项 安装完成以后有这两个虚拟网卡。 CentOS官网镜像地址 https://www.centos.org/download/mirrors/Vmvare安装CentOS7.6 创建虚拟机 安装CentOS7.6 选择桌面版 磁盘分区 上述是确认使用自动分区。 设置密码 设置license information 欢迎页面 CentOS7…

Opencv+python模板匹配

我们经常玩匹配图像或者找相似&#xff0c;opencv可以很好实现这个简单的小功能。 模板是被查找目标的图像&#xff0c;查找模板在原始图像中的哪个位置的过程就叫模板匹配。OpenCV提供的matchTemplate()方法就是模板匹配方法&#xff0c;其语法如下&#xff1a; result cv2.…

智能小家电的跨境渠道有哪些,美国商超入驻选百思买如何?

智能小家电是现代家庭生活的重要部分&#xff0c;提升了生活品质&#xff0c;体现消费者追求个性化、智能化生活。跨境电商发展快速&#xff0c;智能小家电跨境渠道多样化&#xff0c;为品牌提供广阔市场。本文将深入探讨智能小家电的跨境渠道&#xff0c;并分析选择百思买作为…

记录 Bonobo Git 服务器 SMTP 设置

Bonobo 使用标准的 .NET SMTP 设置&#xff0c;可以在 web.config 中指定这些设置。 <system.net><mailSettings><smtp deliveryMethod"network" from"bonobobonoserver.your.domain"><network host"accessible.smtp.host"…

B端组件:穿梭框—可不是简单的左口袋放右口袋

B端组件穿梭框&#xff08;Transfer&#xff09;是一种常见的界面组件&#xff0c;用于在两个列表之间进行数据交互。它通常由两个列表和一些操作按钮组成&#xff0c;其中一个列表用于展示可选数据&#xff0c;另一个列表用于展示已选数据&#xff0c;操作按钮用于将数据从一个…

LeetCode刷题之HOT100之打家劫舍

2024/6/26 大家早上好呀&#xff01;今天不热诶&#xff0c;昨天跟镔哥跑了五公里&#xff0c;配速515简直不要太爽啊&#xff0c;跑完后在操场走一圈&#xff0c;正好发小发了群视频过来&#xff0c;聊了半小时。发小一考研二战失利&#xff0c;去干测试&#xff0c;天天累得不…

基于springboot实现机动车号牌管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现机动车号牌管理系统演示 摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&am…

Mybatis插入操作 主键自增 返回成功 但是数据库没有数据

插入操作成功&#xff0c;消耗了一个主键&#xff0c;但是数据库没有看到相关数据。一般这种情况说明可能事务没有执行成功&#xff0c;事务回滚了。数据库操作要通过 ACID规则来约束事务&#xff0c;即原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistenc…

日语培训日语等级考试柯桥小语种学习语言学校

什么是外来语 外来语是指在日本的国语中使用的来源于外国语言的词汇。但狭义上的外来语则是指来源于欧美国家语言的词汇&#xff0c;其中大部分是来源于英美语系的词汇。日语中的汉语词汇很多&#xff0c;大多是自古以来从中国引进的&#xff0c;从外来语的定义看&#xff0c;汉…

使用git在GitHub上克隆指定版本的项目

以pytorch3d为例 先查看想克隆的版本号&#xff0c;我选择v0.7.4版的 再使用git命令进行克隆&#xff0c;只要在clone后面加上--branch 版本号 git clone --branch v0.7.4 https://github.com/facebookresearch/pytorch3d.git

解决msvcp120.dll问题的详细步骤,分析msvcp120.dll文件

msvcp120.dll文件是Microsoft Visual C Redistributable Package for Visual Studio 2013中的一个组件。如果提示你丢失该文件&#xff0c;通常意味着程序试图调用一个未在你电脑上安装的Visual C版本。下面是解决此问题的详细步骤。 msvcp120.dll丢失的解决方法 方法 1&#…

三大关键技术看RAG如何提升LLM的能力

大语言模型表现出色&#xff0c;但是在处理幻觉、使用过时的知识、进行不透明推理等方面存在挑战。检索增强生成&#xff08;RAG&#xff09;作为一个新兴的解决方案&#xff0c;通过整合外部知识库的数据&#xff0c;提高了模型在知识密集型任务中的准确性和可信度&#xff0c…

PointCloudLib (多线程)快速双边滤波 C++版本

0.实现效果 原始点云 和滤波后的点云对比 1.算法原理 PCL(Point Cloud Library)快速双边滤波是一种高效的点云数据滤波方法,它基于传统双边滤波算法进行了改进,通过引入近似方法加速计算过程。以下是关于PCL快速双边滤波的详细回答: 1. 基本原理 空间滤波:在点云中,相…

团队协同渗透测试报告输入输出平台部署

目录 简介 文章来源 部署环境 文件下载 开始安装 系统初始化 免责声明 结语 简介 因应监管部需求&#xff0c;国内访问Docker源pull镜像开始变得复杂且困难起来了&#xff0c;大佬github给的在线/离线安装脚本跑了很久也无法拉取到镜像&#xff0c;所以将以前的镜像打…