现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据

每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成

1、添加data变量

编辑record.vue文件,添加两个变量page和more

page默认为0,表示当前的页数;more默认为true,用来控制底部显示的信息

data () {return {show_record:false,userinfo:{},records:[],page: 0,more: true}
},

2、添加底部页面代码

<!-- 参考代码,无需粘贴
<RecordList :key='index' v-for='(record,index) in records' :record = 'record'></RecordList> --><!-- 需要添加的部分 -->
<!-- 如果more为false,底部显示「没有更多数据」 -->
<p class="text-footer" v-if="!more">没有更多数据
</p>
<!-- 如果records数据一共不到15条,底部什么也不用显示 -->
<p class="text-footer" v-else-if="records.length < 15">
</p>
<!-- 如果more为true,并且总记录大于15条,底部显示加载中 -->
<p class="text-footer" v-else>加载中···
</p>

3、编辑getRecords方法

根据下面的提示编辑方法

async getRecords () {//调用后台数据时显示「加载中」提示框wx.showToast({title: '加载中',icon: 'loading'})//***需要添加的代码***if(this.page === 0){this.records = []}//需要传到后台的数据const data = {openid: this.userinfo.openId,//***需要添加的代码***page: this.page}//将后台传过来的数据保存到records变量中const records = await get('/weapp/getrecords', data)//concat是拼接数组的方法,将新查出的数据,拼接到records数组中//***需要编辑的代码***// this.records = records.recordsthis.records = this.records.concat(records.records)//***需要添加的代码***//每次在数据库中查找15条数据,如果查出的数据不足15条说明这是最后一页了,将more改为falseif (records.records.length < 15 && this.page > 0) {this.more = false}//通过records数组的长度来判断show_record变量为false或者trueif(this.records.length === 0){this.show_record = true}else{this.show_record = false}console.log("从后台返回的记录数据:",this.records)wx.hideToast()
}

4、到达底部加载数据

onReachBottom函数是到达小程序页面底部会触发的函数,我们在这里面调用getRecords方法,每次小程序页面下拉到底部,都会自动触发getRecords方法,调用record数据

//参考代码,无需粘贴
//onShareAppMessage(e) {//...
//},// 需要添加的代码
onReachBottom () {// 如果more为false,说明没有更多数据了,不需要再加载getRecords方法,return结束加载if (!this.more) {return false}// 加载下一页this.page = this.page + 1console.log("this.page",this.page)this.getRecords()
},

5、修改后台操作文件

也就是server/controllers/getrecords.js文件,接收到当前的页面page数据,加载相应数据

//原代码
const {openid} = ctx.request.query//修改为
const {openid,page} = ctx.request.query
//原代码
const records = await mysql('records').select('id','add','mark','note','create_time').where("openid",openid).orderBy('id','desc')//修改为
const records = await mysql('records').select('id','add','mark','note','create_time').where("openid",openid).orderBy('id','desc').limit(15).offset(Number(page) * 15)

limit n offset m是mysql的分页语句 代码从m行开始查,查找n条数据

6、重置页面

每次切换到记录页面,用户应该最想看到最新数据,所以需要将page变量设为0

(1)给getRecords方法添加一个参数init,并且当init为true时,将page重置为0,more重置为true

//getRecords方法添加一个参数init
async getRecords (init) {if(init){this.page = 0this.more = true}//参考代码,无需粘贴//wx.showToast({//title: '加载中',//icon: 'loading'//})//...
//}

(2)编辑onShow中的getRecords方法,添加参数true

//原代码
this.getRecords()//修改为
this.getRecords(true)

7、下拉重置页面

下拉函数我们之前讲过是onPullDownRefresh,使用这个函数,需要现在main.json文件里面授权

(1)在src/pages/record文件夹下面新建main.json文件,并在文件中添加代码

{"enablePullDownRefresh":true
}

(2)在record.vue文件中添加onPullDownRefresh函数,并调用getRecords方法

//参考代码,无需粘贴
//onReachBottom () {//…
//}//需要添加的代码
onPullDownRefresh () {this.getRecords(true)wx.stopPullDownRefresh()
}

8、测试

保存所有修改的文件,打开微信开发者工具测试效果

在首页点击按钮,生成20条左右的记录

切换到记录页面,查看下面几个方面:

(1)上翻小程序到达底部,查看是否会自动加载数据,加载完所有数据,底部会显示没有更多数据

(2)下拉小程序,查看页面是否更新

(3)切换页面,查看页面是否更新

作者:猫宁一 95后全栈程序媛₍ᐢ •⌄• ᐢ₎一枚~ 热爱学习!热爱编程!
可关注【猫宁一】公众号领取我所有全栈项目代码哦~点击查看课程目录:微信小程序全栈开发课程目录

上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...相关推荐

  1. 为啥我的页面模板的from提交不了数据_4-9【微信小程序全栈开发课程】意见反馈(四)--提交反馈信息

    1.创建后端操作文件 先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下 ...

  2. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.10 image组件,如何实现图片懒加载?

    一.与image组件有关的技术问题 1.1 什么是WebP? webp是image组件的一个boolean属性,开启这个属性之后,代表url可以设置webp这种格式的图片.webP是一种同时提供了有损 ...

  3. Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)

    ArthurSlog SLog-71 Year·1 Guangzhou·China Sep 12th 2018 ArthurSlog Page GitHub NPM Package Page 掘金主页 ...

  4. 微信小程序 通过wx.redirectTo,实现单页面刷新效果 & 下拉刷新页面数据效果

    微信小程序 通过wx.redirectTo,实现单页面刷新效果 & 下拉刷新页面数据效果 一: 使用 wx.redirectTo(),实现页面刷新数据效果 API说明: 关闭当前页面,跳转到应 ...

  5. 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程)

    本篇记录说明 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程,详细内容可私信交流) (第一次写博客,写得不好的地方见谅,面向新手,大佬请无视,不喜勿喷 ...

  6. 小程序源码:后台版本趣味测试微信小程序源码下载支持自定义问题等等

    这是一款有后台版本的趣味测试小程序 支持用户自定义添加和删除问题 支持流量主后台设置 支持用户个人中心等等 该程序是微擎框架的,所以后台需要有微擎 PS:该小程序的登录接口并未替换更新还是采用的旧版登 ...

  7. 独立后台修复登录在线答题微信小程序源码下载

    这是一款全新的独立后台在线答题小程序 不是市场上面那些微擎版本的 独立后台操作更简单内容更丰富 支持用户自定义题库 源码自带题库另外用户也可以自行添加 支持在线奖励,激励视频领取在线奖励 支持登录礼包 ...

  8. 微信小程序时间加法_微信小程序获取系统时间、时间戳、时间时间戳加减

    微信小程序获取系统时间.时间戳.时间时间戳加减,微信小程序获取明天时间 //获取当前时间戳 var timestamp = Date.parse(new Date()); timestamp = ti ...

  9. 微信小程序使用云开发实现微信支付功能 报错Error: 签名错误,史上最全解决办法,不服留言骂我

    报错背景 微信小程序使用云开发实现微信支付功能,但是报错了 报错信息 报错原因 小程序想要使用微信支付,必须满足下面几个条件的 1,必须是非个人小程序(个人小程序用不了支付) 企业小程序需要认证! 2 ...

最新文章

  1. 0x06.基本算法 — 倍增
  2. 和自己和解:方法的借鉴level
  3. Golang——数据类型转换(Sprintf、Format、Append方式转换)
  4. 头条终面:写个消息中间件
  5. 网易暴力裁撤绝症员工后,多益网络徐波、孙宇晨都要出钱给该离职员工治病!...
  6. 李迟2021年6月知识总结
  7. Linux 内核的测试和调试(1)
  8. 关于面向对象和面向过程本质的区别(个人感悟)
  9. 分层架构中各层之间关系如何界定,期待大家来讨论
  10. 数学建模系列(三)-评价模型(六)---神经网络评价
  11. 卡巴6kis最新激活码
  12. 计算机英语论文1000,1000字的英语论文范文大全
  13. Mac系统重置快捷键
  14. WEB短信平台定制 短信系统构建 路由通道搭建 web版短信后台管理系统 概括简介
  15. 7-3 干支纪年法 (100 分)
  16. 【小沐学Android】Android手机上基于Termux实现Web服务器(Python、node.js、C/C++)
  17. 青铜三人行之青蛙跳台阶
  18. PS动作怎么一键给照天添加烟雾效果图
  19. iOS 知识点整理 (持续更新...)
  20. Android 使用RecycleView制作头像堆叠效果

热门文章

  1. mysql 64位 安装1045_MySql 安装时的1045错误
  2. 无光驱如何修复W7计算机,Win7电脑没有光驱怎么装系统?
  3. ps怎么更改背景图层大小_PhotoShop处理图层的一些技巧方法、PS图层处理教程
  4. Java中List、Map、Set三个接口,存取元素时,各有什么特点?
  5. java8 Optional正确使用姿势
  6. 为什么从网页上打印怎们好像被缩放_全网最详细关于3D打印的zbrush技术
  7. 主动断开socket链接_TCP连接与断开详解(socket通信)
  8. 计算机本地磁盘D无法扩展,计算机上的本地磁盘D突然无法打开,表明它需要格式化...
  9. TensorFlow实验(2)
  10. ios下js复制到粘贴板_EXCEL被你忽视的粘贴板-11