博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序下拉刷新与上拉加载
阅读量:6415 次
发布时间:2019-06-23

本文共 3931 字,大约阅读时间需要 13 分钟。

空余时间做小程序练手,遇到了一个需求,需要下拉刷新与上拉加载,一时间没有头绪,然后在掘金里搜索了一下相关的文章,跟着做了还是一头雾水,没有达到我想要的想过,结果产生了新的问题,挣扎了以后,又去看了一下微信小程序的开发文档,于是守得云开见月明了.

在Page()函数注册页面的时候,有一个内置的Object对象,其中有两个方法是用于下拉刷新和上拉加载的,他们是onPullDownRefresh和onReachBottom,这两个方法分别会在用户在该页面顶部下拉一段距离和在页面底部上拉一段距离(默认是50px,可配置)时触发.

注意: 页面的下拉刷新在小程序中默认是禁止的,我们可以在对应的配置文件xxx.json中做一下配置来开启该页面的下拉刷新功能, 示例如下:

{ "enablePullDownRefresh": true }

一定要注意这里的true是布尔值而不是字符串奥,又一次我就因为把一个配置项的true写成了'true',我想当然的以为js的自动转换可以处理,但是小程序并没有做自动的类型转换,导致我好一番折腾.

设置完之后下拉,就可以看到loading的图标,有些同学看不到,则需要在app.json做出以下配置:

接下来,就是根据我们的需求,来定义onPullDownRefresh方法和onReachBottom方法了,代码实例:

// 上拉触底加载onReachBottom: function () {      if(this.data.hasData){ // hasData用于标识下一页数据的有无, hasData默认为true      // 显示加载图标      wx.showLoading({        title: '玩命加载中',      });      let params = this.data.params;      params.page++;  // 页数+1      this.setData({        params: params      });      wx.request({        url: app.globalData.baseUrl + 'normal/list',         method: 'GET',        data: this.data.params,        header: {        'content-type': 'application/json',        'sessionId': app.globalData.sessionId        },        success: (res) => {          let response = res;          let voteList = this.data.voteList;          wx.hideLoading();          if(response.data.code == 200) {            if(response.data.data.records.length > 0) {              voteList = voteList.concat(response.data.data.records);              if(response.data.data.records.length < this.data.params.pageSize) {  // 此时已经没有下一页数据了,将hasData设置为false                this.setData({                  voteList: voteList,                  hasData: false                });                wx.showToast({                  title: '没有更多了',                  icon: "none"                });                return true;              } else {                this.setData({  // 仍有下一页数据,则hasData设置为true                  voteList: voteList,                  hasData: true                });                return true;              }             }                      }        },        fail: (err) => {          this.setData({            voteList: voteList,            hasData: true          });          wx.showToast({            title: '失败了,请检查网络设置~',            icon: "none"          });          return false;        }        })    }  },  // 下拉刷新事件  onPullDownRefresh: function () {    let _params = this.data.params;    _params.page = 1; // 页数重置为1    console.log(_params.page)    this.setData({      voteList: [],  // 原有数据置空      params: _params    });    wx.request({      url: app.globalData.baseUrl + 'normal/list',       method: 'GET',      data: this.data.params,      header: {      'content-type': 'application/json',      'sessionId': app.globalData.sessionId      },      success: (res) => {        let response = res;        let voteList = this.data.voteList;        if(response.data.code == 200) {          if(response.data.data.records.length > 0) {            voteList = voteList.concat(response.data.data.records);            if(response.data.data.records.length < this.data.params.pageSize) {              this.setData({                voteList: voteList,                hasData: true  // 这里将有无数据值wei              });              wx.showToast({                title: '没有更多了',                icon: "none"              });              return true;            } else {              this.setData({                voteList: voteList,                hasRefesh: false,                hasData: true              });              return true;            }           }                  }      },      fail: (err) => {        this.setData({          hasRefesh: false,          hasData: true        });        wx.showToast({          title: '失败了,请检查网络设置~',          icon: "none"        });        return false;      }    })  }复制代码

写到这里,上拉刷新和下拉加载的功能也就完成了. 如果这篇文章帮到你了,欢迎你的小心心~~, 如果你有更好的实现下拉刷新和上拉加载的方案,欢迎私信我~~,这是最令人开心的事儿了.

转载于:https://juejin.im/post/5b66b5a0f265da0f486136a1

你可能感兴趣的文章
如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库...
查看>>
[20171113]修改表结构删除列相关问题3.txt
查看>>
特征选择
查看>>
在Winform程序中设置管理员权限及为用户组添加写入权限
查看>>
RTMP直播到FMS中的AAC音频直播
查看>>
多能互补提速 加快我国能源转型和现代能源体系建设
查看>>
《JavaScript设计模式》——2.5 多种调用方式——多态
查看>>
Redis开发运维实践高可用和集群架构与实践(二)
查看>>
程序员的常见“谎话”:对,这是一个已知 Bug
查看>>
如何侦查SQL执行状态
查看>>
CentOS 7 命令行如何连接无线网络
查看>>
Ubuntu 12.04上享用新版本Linux的功能
查看>>
logstash + grok 正则语法
查看>>
Zimbra开源版(v8.6)安装说明
查看>>
Android性能优化之TraceView和Lint使用详解
查看>>
linux centos7.2 安装mysq,nginx,php
查看>>
myrocks之事务处理
查看>>
基于pgrouting的路径规划之一
查看>>
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>