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


Posted in Javascript onSeptember 05, 2019

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

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

设置js里onPullDownRefresh和onReachBottom方法

下拉加载说明:

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

onPullDownRefresh(){
console.log('--------下拉刷新-------')

wx.showNavigationBarLoading() //在标题栏中显示加载

wx.request({
     url: 'https://URL',
     data: {},
     method: 'GET',
     // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
     // header: {}, // 设置请求的 header
     success: function(res){
      // success
     },
     fail: function() {
      // fail
     },
     complete: function() {
      // complete
      wx.hideNavigationBarLoading() //完成停止加载
      wx.stopPullDownRefresh() //停止下拉刷新
   }
})

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

index.wxml

<!--index.wxml-->
 <view class="container" style="padding:0rpx">
  <!--垂直滚动,这里必须设置高度-->
   <scroll-view scroll-top="{{scrollTop}}" scroll-y="true" style="height:{{scrollHeight}}px;"
     class="list" bindscrolltolower="bindDownLoad" bindscrolltoupper="topLoad" bindscroll="scroll">
     <view class="item" wx:for="{{list}}">
       <image class="img" src="{{item.pic_url}}"></image>
       <view class="text">
         <text class="title">{{item.name}}</text>
         <text class="description">{{item.short_description}}</text>
       </view>
     </view>
   </scroll-view>
   <view class="body-view">
     <loading hidden="{{hidden}}" bindchange="loadingChange">
       加载中...
     </loading>
   </view>
 </view>

index.js

var url = "http://www.imooc.com/course/ajaxlist";
var page =0;
var page_size = 5;
var sort = "last";
var is_easy = 0;
var lange_id = 0;
var pos_id = 0;
var unlearn = 0;
 // 请求数据<br> var loadMore = function(that){
  that.setData({
    hidden:false
  });
  wx.request({
    url:url,<br>    data:{
      page : page,
      page_size : page_size,
      sort : sort,
      is_easy : is_easy,
      lange_id : lange_id,
      pos_id : pos_id,
      unlearn : unlearn
    },
    success:function(res){
      //console.info(that.data.list);
      var list = that.data.list;
      for(var i = 0; i < res.data.list.length; i++){
        list.push(res.data.list[i]);
      }
      that.setData({
        list : list
      });
      page ++;
      that.setData({
        hidden:true
      });
    }
  });
}
Page({
 data:{
  hidden:true,
  list:[],
  scrollTop : 0,
  scrollHeight:0
 },
 onLoad:function(){
  //  这里要注意,微信的scroll-view必须要设置高度才能监听滚动事件,所以,需要在页面的onLoad事件中给scroll-view的高度赋值
   var that = this;
   wx.getSystemInfo({
     success:function(res){
       that.setData({
         scrollHeight:res.windowHeight
       });
     }
   });
    loadMore(that);
 },
 //页面滑动到底部
 bindDownLoad:function(){ 
   var that = this;
   loadMore(that);
   console.log("lower");
 },
 scroll:function(event){
  //该方法绑定了页面滚动时的事件,我这里记录了当前的position.y的值,为了请求数据之后把页面定位到这里来。
   this.setData({
     scrollTop : event.detail.scrollTop
   });
 },
 topLoad:function(event){
  //  该方法绑定了页面滑动到顶部的事件,然后做上拉刷新
   page = 0;
   this.setData({
     list : [],
     scrollTop : 0
   });
   loadMore(this);
   console.log("lower");
 }<br> })

index.wxss

/**index.wxss**/
 
 .userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
 }
 
 .userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
 }
 
 .userinfo-nickname {
  color: #aaa;
}
 
 .usermotto {
  margin-top: 200px;
 }
 
 /**/
 
 scroll-view {
  width: 100%;
 }
 
 .item {
  width: 90%;
  height: 300rpx;
  margin: 20rpx auto;
  background: brown;
  overflow: hidden;
 }
 
 .item .img {
  width: 430rpx;
  margin-right: 20rpx;
  float: left;
 }
 
 .title {
  font-size: 30rpx;
  display: block;
  margin: 30rpx auto;
 }
 
 .description {
 font-size: 26rpx;
  line-height: 15rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
js调用css属性写法
Sep 21 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
微信小程序 视图容器组件的详解及实例代码
Jan 19 Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
vue组件(全局,局部,动态加载组件)
Sep 02 Javascript
vue vant中picker组件的使用
Nov 03 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
layui动态加载多表头的实例
Sep 05 #Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 #Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 #Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 #Javascript
JS中比Switch...Case更优雅的多条件判断写法
Sep 05 #Javascript
layer实现弹出层自动调节位置
Sep 05 #Javascript
vue使用i18n实现国际化的方法详解
Sep 05 #Javascript
You might like
基于mysql的论坛(7)
2006/10/09 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
PHP中cookie知识点学习
2018/05/06 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
Javascript面向对象编程
2012/03/18 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Python实现自动访问网页的例子
2020/02/21 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
计算机科学技术自荐信
2014/06/12 职场文书
医学生求职信
2014/07/01 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
销售会议开幕词
2016/03/04 职场文书