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


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 相关文章推荐
ExtJs中简单的登录界面制作方法
Aug 19 Javascript
jquery中对于批量deferred的处理方法
Jan 22 Javascript
iframe里的页面禁止右键事件的方法
Jun 10 Javascript
JavaScript中Function()函数的使用教程
Jun 04 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
JS实现上传图片实时预览功能
May 22 Javascript
JS库之Three.js 简易入门教程(详解之一)
Sep 13 Javascript
vue单页应用加百度统计代码(亲测有效)
Jan 31 Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
微信小程序wxml列表渲染原理解析
Nov 27 Javascript
对vue生命周期的深入理解
Dec 03 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
一步一步学习PHP(6) 面向对象
2010/02/16 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
python中实现php的var_dump函数功能
2015/01/21 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python开启debug模式的方法
2019/06/27 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
公益广告语集锦
2014/03/13 职场文书
《忆江南》教学反思
2014/04/07 职场文书
公司员工安全协议书
2014/11/21 职场文书
朋友聚会开场白
2015/06/01 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书