微信小程序如何上拉加载下一页
变量
data: {videos: [],page: 1,pageSize: 8,isLastPage: false,tips: '上拉加载更多'
},
videos
数据容器page
当前页数pageSize
一页的数据量isLastPage
当前是否最后一页tips
页尾提示信息
上拉事件
onReachBottom: function () {// 最后一页了,取消下拉功能if (this.data.isLastPage) {return}this.setData({ page: this.data.page + 1 })this.requestVideos(this.data.activeIndex)
},
需要判断是否最后一页,不再响应加载,我这里直接return出函数了,requestVideos
是向服务器访问数据的自定义函数
你也可以在页面的.json
文件中定义距离底部多少距离,响应上拉事件,我试了,感觉差别不大,没太多影响
请求
requestVideos(index){// 发起请求wx.showLoading({title: '加载中',})var app = getApp()wx.request({url: app.globalData.request_domain + '/index/index/videos',data: { type: index, page: this.data.page },method: "POST",header: {'content-type': 'application/x-www-form-urlencoded'},success: (res) => {if (res.statusCode != 200 || res.data.code != 200) {app.showError()} else {wx.hideLoading()var newData = {}if (res.data.data.length < this.data.pageSize) {// 没有数据了,已经是最后一页newData.isLastPage = truenewData.tips = "已显示全部啦"}// 追加数据newData.videos = this.data.videos.concat(res.data.data)this.setData(newData)}},fail: () => {app.showError()}})}
Array.concat(Array)
将参数数组添加到调用数组中,形成新的数组newData
是为了去保存可能存在需要刷新的分页数据- 通过
pageSize
判断是否最后一页 showError()
是定义在app
中的全局函数,就是显示几秒的错误提示
// 显示网络异常
showError: function () {wx.showToast({title: "网络异常",icon: 'loading'})
}
顺便提一点是微信小程序是有 icon
为 success
和 loading
的延时显示提示,没有错误的,你可以自定义图片路径在参数 image
中,来显示指定图标的提示
上面的函数你甚至可以定义传参来自定义提示内容
完整代码
以下是我小程序中所有 js 代码,因为我是有几个类型的视频,可以选择然后刷新,注意在页面有任何刷新的时候,都需要考虑分页数据的重置,当需要重置的次数很多,你当然需要把它放在一个函数中去调用
Page({data: {domain: getApp().globalData.resource_domain,activeIndex: 1,videos: [],page: 1,pageSize: 8,isLastPage: false,tips: '上拉加载更多'},onLoad: function() {this.requestVideos(1)},// 上拉加载更多onReachBottom: function () {// 最后一页了,取消下拉功能if (this.data.isLastPage) {return}this.setData({ page: this.data.page + 1 })this.requestVideos(this.data.activeIndex)},// 选择menuselector: function(e) {var index = e.currentTarget.dataset.index// 改变当前类,并重置分页数据this.setData({activeIndex: index,page: 1,isLastPage: false,tips: '上拉加载更多',videos: []})this.requestVideos(index)},/*** 请求视频集 1:一杆进洞 2:练习场 3:所有*/requestVideos(index){// 发起请求wx.showLoading({title: '加载中',})var app = getApp()wx.request({url: app.globalData.request_domain + '/index/index/videos',data: { type: index, page: this.data.page },method: "POST",header: {'content-type': 'application/x-www-form-urlencoded'},success: (res) => {if (res.statusCode != 200 || res.data.code != 200) {app.showError()} else {wx.hideLoading()var newData = {}if (res.data.data.length < this.data.pageSize) {// 没有数据了,已经是最后一页newData.isLastPage = truenewData.tips = "已显示全部啦"}// 追加数据newData.videos = this.data.videos.concat(res.data.data)this.setData(newData)}},fail: () => {app.showError()}})}
})
POST 请求需要修改 header,系统默认是 json
微信小程序如何上拉加载下一页相关推荐
- 微信小程序scroll-view上拉加载更多
微信小程序scroll-view上拉加载更多 1.wxml代码 <scroll-view class="scroll-view-container" scroll-ybind ...
- uniapp微信小程序uni-load-more上拉加载更多数据
1.引入uni-app中uni-load-more.vue到自己的项目 import uniLoadMore from '@/components/uni-load-more/uni-load-mor ...
- 微信小程序实现上拉加载更多数据(分页加载)
前言: 该实例和我其他两篇文章息息相关,不清楚的可以先做功课 Vant Weapp小程序 UI 组件库 https://blog.csdn.net/qq_36303853/article/detail ...
- 小程序的上拉加载功能
小程序页面上拉加载步骤 首先,在需要实现的页面js文件中,创建一个获取请求数据的方法: getdata(bool){let _this = thiswx.showLoading({title: '加载 ...
- 小程序解决上拉加载更多时数据超过1024KB
参考: 如果解决小程序1024kb渲染之坑 小程序渲染数据超过 1024k 的解决办法 新手不会用组件,只能自己再弄一个简单一点的解决,直接上代码. app.js // arr 数组,len 长度, ...
- 小程序 onReachBottom 上拉加载事件失效
微信自带的下拉刷新上拉加载需要在 .json 文件里打开 "enablePullDownRefresh": true 在 .js 文件中分别对应两个事件 /*** 页面相关事件处理 ...
- uniapp小程序实现上拉加载更多
废话不多说直接上代码,对了这里的上拉组件使用的是uniapp自带的组件uni-load-more <template><view><view v-for="(i ...
- 小程序(上拉加载更多数据)
小程序部分 首先设置三个用到的初始值:page数据当前页数.limit当前页面几条数据.hasMoreData上拉时是否继续请求数据,即是否还有更多数据,别的就可以参考下面的代码了 小程序代码 // ...
- listview上拉加载上一页 下拉加载下一页共通处理
先什么都不说了,上效果图: 第一页默认显示: 上拉加载下一页: 拉至一定高度: 松开 加载中: 下拉加载上一页: 下拉至一定高度: 松开 加载中: 代码已经上传:http://download.csd ...
最新文章
- FPGA之道(23)VHDL的signal、variable与constant
- 数据湖元数据服务的实现和挑战
- 如何判断基因组的重复区域_利用宏基因组数据组装巨病毒基因组的优势与限制...
- SpringCloud工作笔记73---Http协议操作工具集合
- 抓住数字经济机遇 新华三助力客户加速转型
- 推荐一个高仿微信的项目 有点屌!!!
- druid mysql 时序_Druid时序数据库常见问题及处理方式
- python一二维数据的格式化和处理_python第七周,二维数据的格式化和处理
- 【原创】docker在Ubuntu下1小时快速学习
- 声音鉴定-趣味测试-源码
- Java格式化日期[转自http://java.chinaitlab.com/advance/923542.html ]
- 安卓设备投影到电脑PC端的简单实现
- CSP-X模拟题第三套-信心赛题解
- HP服务器配置远程管理端口iLO的基本方法
- 从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题
- 电脑本地视频怎么添加外挂字幕-奇它博客
- 离散数学:关系的性质
- 计算机必学知识,基础电脑知识:计算机操作常识入门必学
- 天美服务器未响应,王者荣耀服务器上热搜,无数玩家遭遇掉线烦恼,天美该怎么办?...
- 机器学习cae_【硬核助力】智铸超云——适创科技为压铸企业量身定制的专业CAE云平台...