微信小程序下拉加载和上拉刷新两种实现方法

方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新

首先要在json文件里设置window属性

            属性   类型                           描述
enablePullDownRefresh Boolean 是否开启下拉刷新,详见页面相关事件处理函数。

设置js里onPullDownRefresh和onReachBottom方法

    属性    类型          描述
onPullDownRefresh function 页面相关事件处理函数——监听用户下拉动作
onReachBottom function 页面上拉触发底事件的处理函数

下拉加载说明:

当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

  1. onPullDownRefresh(){
  2.   console.log('--------下拉刷新-------')
  3.   wx.showNavigationBarLoading() //在标题栏中显示加载
  4.  
  5.   wx.request({
  6. url: 'https://URL',
  7. data: {},
  8. method: 'GET',
  9. // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  10. // header: {}, // 设置请求的 header
  11. success: function(res){
  12. // success
  13. },
  14. fail: function() {
  15. // fail
  16. },
  17. complete: function() {
  18. // complete
  19. wx.hideNavigationBarLoading() //完成停止加载
  20. wx.stopPullDownRefresh() //停止下拉刷新
  21. }
  22. })

  

方法二:

在scroll-view里设定bindscrolltoupper和bindscrolltolower实现微信小程序下拉

    属性    类型          描述
bindscrolltoupper EventHandle 滚动到顶部/左边,会触发 scrolltoupper 事件
bindscrolltolower EventHandle

滚动到底部/右边,会触发 scrolltolower 事件

  1. index.wxml
  1. <!--index.wxml-->
  2. <view class="container" style="padding:0rpx">
  3. <!--垂直滚动,这里必须设置高度-->
  4. <scroll-view scroll-top="{{scrollTop}}" scroll-y="true" style="height:{{scrollHeight}}px;"
  5. class="list" bindscrolltolower="bindDownLoad" bindscrolltoupper="topLoad" bindscroll="scroll">
  6. <view class="item" wx:for="{{list}}">
  7. <image class="img" src="{{item.pic_url}}"></image>
  8. <view class="text">
  9. <text class="title">{{item.name}}</text>
  10. <text class="description">{{item.short_description}}</text>
  11. </view>
  12. </view>
  13. </scroll-view>
  14. <view class="body-view">
  15. <loading hidden="{{hidden}}" bindchange="loadingChange">
  16. 加载中...
  17. </loading>
  18. </view>
  19. </view>

index.js

  1. var url = "http://www.imooc.com/course/ajaxlist";
  2. var page =0;
  3. var page_size = 5;
  4. var sort = "last";
  5. var is_easy = 0;
  6. var lange_id = 0;
  7. var pos_id = 0;
  8. var unlearn = 0;
  9.  
  10. // 请求数据
  11. var loadMore = function(that){
  12. that.setData({
  13. hidden:false
  14. });
  15. wx.request({
  16. url:url,
  17. data:{
  18. page : page,
  19. page_size : page_size,
  20. sort : sort,
  21. is_easy : is_easy,
  22. lange_id : lange_id,
  23. pos_id : pos_id,
  24. unlearn : unlearn
  25. },
  26. success:function(res){
  27. //console.info(that.data.list);
  28. var list = that.data.list;
  29. for(var i = 0; i < res.data.list.length; i++){
  30. list.push(res.data.list[i]);
  31. }
  32. that.setData({
  33. list : list
  34. });
  35. page ++;
  36. that.setData({
  37. hidden:true
  38. });
  39. }
  40. });
  41. }
  42. Page({
  43. data:{
  44. hidden:true,
  45. list:[],
  46. scrollTop : 0,
  47. scrollHeight:0
  48. },
  49. onLoad:function(){
  50. // 这里要注意,微信的scroll-view必须要设置高度才能监听滚动事件,所以,需要在页面的onLoad事件中给scroll-view的高度赋值
  51. var that = this;
  52. wx.getSystemInfo({
  53. success:function(res){
  54. that.setData({
  55. scrollHeight:res.windowHeight
  56. });
  57. }
  58. });
  59. loadMore(that);
  60. },
  61. //页面滑动到底部
  62. bindDownLoad:function(){
  63. var that = this;
  64. loadMore(that);
  65. console.log("lower");
  66. },
  67. scroll:function(event){
  68. //该方法绑定了页面滚动时的事件,我这里记录了当前的position.y的值,为了请求数据之后把页面定位到这里来。
  69. this.setData({
  70. scrollTop : event.detail.scrollTop
  71. });
  72. },
  73. topLoad:function(event){
  74. // 该方法绑定了页面滑动到顶部的事件,然后做上拉刷新
  75. page = 0;
  76. this.setData({
  77. list : [],
  78. scrollTop : 0
  79. });
  80. loadMore(this);
  81. console.log("lower");
  82. }
  83. })

index.wxss

  1. /**index.wxss**/
  2.  
  3. .userinfo {
  4. display: flex;
  5. flex-direction: column;
  6. align-items: center;
  7. }
  8.  
  9. .userinfo-avatar {
  10. width: 128rpx;
  11. height: 128rpx;
  12. margin: 20rpx;
  13. border-radius: 50%;
  14. }
  15.  
  16. .userinfo-nickname {
  17. color: #aaa;
  18. }
  19.  
  20. .usermotto {
  21. margin-top: 200px;
  22. }
  23.  
  24. /**/
  25.  
  26. scroll-view {
  27. width: 100%;
  28. }
  29.  
  30. .item {
  31. width: 90%;
  32. height: 300rpx;
  33. margin: 20rpx auto;
  34. background: brown;
  35. overflow: hidden;
  36. }
  37.  
  38. .item .img {
  39. width: 430rpx;
  40. margin-right: 20rpx;
  41. float: left;
  42. }
  43.  
  44. .title {
  45. font-size: 30rpx;
  46. display: block;
  47. margin: 30rpx auto;
  48. }
  49.  
  50. .description {
  51. font-size: 26rpx;
  52. line-height: 15rpx;
  53. }

效果图

微信小程序之下拉加载和上拉刷新的更多相关文章

  1. 微信小程序下拉加载和上拉刷新两种实现方法

    方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性 设置js里onPullDownRefresh和onR ...

  2. 微信小程序---》分包加载

    [小程序]---分包加载   一.分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载 在构建小程序分包项目时,构建会输出一个或多个分包.每个使 ...

  3. 微信小程序-工具无法加载本地模拟开发服务的解决办法

    微信小程序开发工具出现如下问题: 因为网络代理软件或者 VPN 影响,工具无法加载本地模拟开发服务  请尝试以下任一解决方案1.关闭相关网络代理软件,重新编译成功后,再启动相关网络代理软件: 2.配置 ...

  4. 微信小程序实现滚动加载更多

    1.需要用到的组件和api scroll-view(可滚动视图区域) wx.showToast(OBJECT)显示消息提示窗----显示loading小菊花用的 2.需要用到的属性 3.scrol-v ...

  5. 微信小程序 - 图片懒加载

    wxml <!-- 数据源 --> <view class='item-{{index}}' wx:for="{{lazyData}}" wx:key=" ...

  6. 微信小程序中的加载更多(即列表分页)

    1.app.json中: "window": { "enablePullDownRefresh": true //是否开启当前页面下拉刷新 } 2.wxml中: ...

  7. 微信小程序上滑加载更多

    onReachBottom: function () { var that = this var limit = that.data.limit var count = that.data.count ...

  8. 微信小程序上拉加载下拉刷新

    微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载 ...

  9. 微信小程序之下拉刷新,上拉更多列表实现

    代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...

随机推荐

  1. springmvc入门(1)

    一..springmvc框架 1.什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.springmvc是一个基于mv ...

  2. 通过docker-compose构建ghost博客(一)

    通过命令构建ghost博客 docker run -d --name ghost -p : -v $PWD/data:/var/lib/ghost ghost 当然也可以编写yml文件,通过docke ...

  3. php 图像处理函数

    gd_info       函数:获取当前安装的GD库的信息 getimagesize  函数:获取图像的大小 image_type_to_extension   函数:获取图像类型的文件后缀 ima ...

  4. DirectX中坐标系问题

    自己属于笨类型,以前总是记不住directx坐标系是怎样的,今天在网上看到一篇文章,借鉴过来. 1. 明确DirectX是左手坐标系. 描述如下:1. 伸出左手,手面朝上,手背朝下,握住z轴,大拇指方 ...

  5. 27.MySQL备份与恢复

    27.备份与恢复27.1 备份/恢复策略考虑因素:备份表的存储引擎(事务性or非事务性):全备份or增量备份用复制做异地备份定期备份,考虑恢复时间确保mysql打开log-bin,有了BINLOG,M ...

  6. MySQL表的相关操作

    操作数据表之前,必须先选择相应数据表所在的数据库 mysql> USE databaseName; -- 选择数据库 查看该数据库下的数据表 mysql> show tables; 确定数 ...

  7. Partition Array Into Three Parts With Equal Sum LT1013

    Given an array A of integers, return true if and only if we can partition the array into three non-e ...

  8. Visual code 搭建Vue项目

    使用VS Code搭建Vue项目 1.安装 VScode 2..安装最新node.JS 2.安装cnpm镜像  淘宝镜像(node自带安装了npm,故不再安装) npm install -g cnpm ...

  9. 要显示的联系人——>自定义-bug

    自定义中将“电话”下的“所有联系人”不勾选,但是Contacts列表还是显示PHONE联系人. SELECT _id, display_name, agg_presence.mode AS conta ...

  10. NOIP2017提高组day2T1题解(奶酪)

    题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...