小程序上拉加载下拉刷新

小程序中通过scroll-view来控制页面的滚动,其主要作用是可以用来做上拉加载下拉刷新列表页。

json:做下拉刷新时需要用到小程序提供的onPullDownRefresh方法,所以在配置项里面必须开启enablePullDownRefresh

{

  "navigationBarTitleText": "我的收藏",

  "enablePullDownRefresh": true,

  "backgroundColor": "#eeeeee"

}

wxml视图页

scroll-top:设置竖向滚动条的位置,如果设置的值没有变化,组件不会渲染。

scroll-y:允许纵向滚动

upper-threshold:距顶部/左边多远时(单位px),触发scrolltoupper 事件,默认值为50px

lower-threshold:距底部/右边多远时(单位px),触发 scrolltolower 事件,默认值为50px(这个属性要注意,如果设置的值过大会多次触发scrolltolower)

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

bindscrolltoupper:滚动到顶部/左边,触发 scrolltoupper 事件

wxss样式:使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height,一定要设置!!!

.hot{

  width: 100%;

  height: 40px;

  line-height: 40px;

  font-size: 16px;

  text-indent: 24px;

  background-color: #f0f0f0;

}

.hot-box{

  display: block;

  height: 100%;

}

JS

var util = require('../../../utils/util.js');

constApp = getApp();

Page({

  data:{

   itemData: [],//收藏店铺的信息

   storePic:"",//店铺图片

   pageNum:1,//页数

   total:"",//总记录数

   refresh:false,//判断刷新还是加载

   done:false,//是否加载全部表项

  },

  //页面加载

 onLoad:function(options) {

    this.data.refresh = true

    this.getList();

  },

  //下拉刷新

 onPullDownRefresh:function() {

    this.data.pageNum = 1;

    this.data.refresh = true;

    this.loading();

  },

  //上拉加载

 loadMore:function() {

    var that = this

    that.data.refresh=false;

   that.setData({

     pageNum: that.data.pageNum +1,

    })

   that.loading();

  },

  //判断是刷新还是加载,调用方法

 loading:function() {

   wx.showLoading({

     title:this.data.refresh ? '刷新中...' : '加载中...',

    })

   setTimeout(this.getList, 1500);

  },

 getList:function() {

    var that = this

    varcustId = App.globalData.custid;

    varmarketId = App.globalData.marketid;

   util.req('collection_getShopCollectionList.action',

      {

       pageNum: that.data.pageNum,

       pageSize:8,

       custId: custId,

       marketId: marketId

     },

      'GET',

      {

       'content-type': 'application/json'

     },

      function(res) {

       if(that.data.refresh) {

         that.setData({

           storePic:'/image/dianpu.png',

           itemData: res.data.list,

           done:false

         })

         wx.hideLoading();

         wx.stopPullDownRefresh();

       }else{

         var num = (that.data.pageNum) * 8

         console.log('num='+num);

         vartotal = res.data.total

         console.log('total='+ total);

         if(num >= total) {

           that.setData({

             storePic:'/image/dianpu.png',

             itemData: that.data.itemData.concat(res.data.list),

             done:true,

           })

           wx.hideLoading();

           return

         }else{

           that.setData({

             storePic:'/image/dianpu.png',

             itemData: that.data.itemData.concat(res.data.list),

             done:false,

           })

           wx.hideLoading();

         }

       }

     });

  },

逻辑部分:刷新和加载是通过当前页数和总记录数来控制的,下拉触发onPullDownRefresh事件,pageSize为1,刷新重新加载当前页面数据。上拉触发scrolltolower事件,当前页数加1。onLoad、onPullDownRefresh和scrolltolower事件均调用了自定义的getList方法。通过定义refresh的布尔值,用来判断是下拉刷新调用的这个函数,还是页面加载时调用的这个函数。Scrolltolower事件触发,pageSize加1,如果加载页面的记录数大于等于后台返回的总记录数,则表示全部加载。通过setTimeout()设置多长时间触发该事件。

注意:一定要设置height和lower-threshold属性,如果不设置height,scrolltolower事件不触发,如果每页显示的记录数的高度小于height的值,scrolltolower事件不触发。如果lower-threshold设置的值过大,会出现scrolltolower多次触发的现象,官方默认为50,设置为1就可以。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 微信小程序在无论在功能、文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们...
    未央大佬阅读 2,297评论 0 12
  • recycleView作为一个新的控件,那是有其特点的。在日常的使用中,基本是可以代替listView和gridv...
    橙一升阅读 5,236评论 12 20
  • 有了小鱼儿,我们家的家庭关系变得更加好玩了。原因很简单,我们家变成了一个三体问题。 在三维空间里,三体旋转路线很混...
    fishbb阅读 413评论 0 0
  • 多少人都希望时光能逆转到从前,只是时光不愿意。在那个暑假,我想了很多东西,遇到了周围很多同学,通过和大家...
    我很邵迪阅读 768评论 0 6