首页 > 编程语言 >6.7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据

6.7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据

时间:2023-02-05 11:32:39浏览次数:40  
标签:记录 -- 微信 getRecords records 页面 true page 加载


现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载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.records
this.records = this.records.concat(records.records)

//***需要添加的代码***
//每次在数据库中查找15条数据,如果查出的数据不足15条说明这是最后一页了,将more改为false
if (records.records.length < 15 && this.page > 0) {
this.more = false
}
//通过records数组的长度来判断show_record变量为false或者true
if(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 + 1
console.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 = 0
this.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)切换页面,查看页面是否更新

6.7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据_微信小程序

作者:猫宁一
全栈程序媛₍ᐢ •⌄• ᐢ₎一枚~ 热爱学习!热爱编程!
可关注【猫宁一】公众号领取我所有全栈项目代码哦~

标签:记录,--,微信,getRecords,records,页面,true,page,加载
From: https://blog.51cto.com/u_12187435/6038238

相关文章

  • 深度学习数学基础-概率与信息论
    前言概率论学科定义概率论是用于表示不确定性声明的数学框架。它不仅提供了量化不确定性的方法,也提供了用于导出新的不确定性声明(statement)的公理。概率论的知识在机器学......
  • 6.8【微信小程序全栈开发课程】清空所有记录
    在个人中心页面有一个清空记录的功能,点击清空记录,会提示是否确认清空记录提示框。用户点击确认后,删除该用户所有的历史record记录数据1、添加方法(1)引用post等工具函数//参考......
  • 7.1【微信小程序全栈开发课程】 小程序上线--Eslint格式规范
    在第2.2节我们注释代码规避了ESlint格式错误,现在将代码取消注释,将Eslint格式格式问题统一修改ps:这一节跳过也可以,不进行Eslint格式规范,小程序项目上线后也可以正常运行1、取......
  • 7.3【微信小程序全栈开发课程】小程序上线--nginx安装、SSL证书安装
    1、安装nginxnginx是一个强大的http服务器,作用是解析链接信息,告诉服务器客户端需要做什么比如nginx收到了链接信息http://localhost:8000/hello/index.html,就告诉服务器客户......
  • 运行pm2命令只出现[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
    小程序上线过程中,pm2安装成功了,但是运行pm2命令只打印一句话root@iZm5e3iekfi2krh6udbikaZ:~/.pm2#pm2-v[PM2]SpawningPM2daemonwithpm2_home=/root/.pm2查看pm2日志......
  • Oracle过程
    --过程:类似于Java中的无返方法--示例1:过程的基本语法createorreplaceprocedure过程名([参数1类型(不要长度),参数2类型,....])is/as[局部变量1类型(要长度);......
  • 5.4节约内存的编程方式
    以图形用户界面(GUI,GraphicalUserInterface)为基础的Windows,可以说是一个巨大的操作系统。Windows的前身是MS-DOS操作系统,最初版本可以在128KB左右的内存上运行,而想要W......
  • .NET 6学习笔记(6)——SSL证书的导出和格式转换
    除了广阔的互联网,这个世界上还存在很多运行在公司内网的WebApplication。假设有团队A提供的网站A,现团队B需要将网站B与之集成。网站A已使用了自签的SSL证书。团队B希望能......
  • 5.5磁盘的物理结构
    磁盘的物理结构是指磁盘存储数据的形式。磁盘是通过把其物理表面划分成多个空间来使用的。划分的方式有扇区方式和可变长方式两种,前者是指将磁盘划分为固定长度的空间,后者......
  • Spring boot 3.0 日志
    springboot3.0已经自己集成了日志功能 logbackSpringBoot启动时自动加载配置文件,配置文件的默认名称为:logback.xml或logback-test.xml其它的文件需要配置yall......