详解微信小程序开发之下拉刷新 上拉加载


Posted in Javascript onNovember 24, 2016

微信小程序中的下拉刷新,上拉加载的功能很常见,目前我知道的有两种可行的方法,一是scroll-view,二是整个页面刷新.今天说说第一种,自己造轮子,难免有些瑕疵,日后慢慢完善.

上gif:详解微信小程序开发之下拉刷新 上拉加载
原理: scroll-view中有监听滑动的方法,这个跟Android类似.其中用到了滑动到顶部,滑动到底部的方法.

1.下拉刷新,在滑动到顶部时,bindscrolltoupper被调用,根据自己的业务逻辑请求即可.我的demo只是随机换了个关键字.

2.上拉加载,在滑动到底部时,bindscrolltolower被调用,我这里是页数加一,根据自己的业务逻辑修改,然后将获取到的集合添加到scroll-view的数据集合里即可.详解微信小程序开发之下拉刷新 上拉加载

上代码:

1.index.js

//index.js 
//获取应用实例 
var app = getApp() 
Page({ 
 data: { 
 words: [], 
 windowHeight: 0,//获取屏幕高度 
 refreshHeight: 0,//获取高度 
 refreshing: false,//是否在刷新中 
 refreshAnimation: {}, //加载更多旋转动画数据 
 clientY: 0,//触摸时Y轴坐标 
 }, 
 onLoad: function () { 
 var _this = this; 
 //获取屏幕高度 
 wxgetSystemInfo({ 
  success: function (res) { 
  _thissetData({ 
   windowHeight: reswindowHeight 
  }) 
  consolelog("屏幕高度: " + reswindowHeight) 
  } 
 }) 
 //获取words 
 wxrequest({ 
  url: 'http://apiavatardatacn/ChengYu/Search?key=77f072d28eb141c8b6dda145ca364b92&keyWord=好', 
  complete: function (res) { 
  if (resdatareason == 'Succes') { 
   _thissetData({ 
   words: resdataresult 
   }) 
  } 
  } 
 }) 
 }, 
 scroll: function () { 
 consolelog("滑动了") 
 }, 
 lower: function () { 
 var start = 0; 
 start += 1; 
 consolelog("加载了") 
 var _this = this; 
 wxrequest({ 
  url: 'http://apiavatardatacn/ChengYu/Search', 
  data: { 
  key: '77f072d28eb141c8b6dda145ca364b92', keyWord: '好', page: start 
  }, 
  complete: function (res) { 
  if (resdatareason == 'Succes') { 
   var words = _thisdatawordsconcat(resdataresult); 
   _thissetData({ 
   words: words 
   }) 
  } 
  } 
 }) 
 }, 
 upper: function () { 
 consolelog("下拉了") 
 //获取用户Y轴下拉的位移 
 
 if (thisdatarefreshing) return; 
 thissetData({ refreshing: true }); 
 updateRefreshIconcall(this); 
 var _this = this; 
 var i = Mathrandom() //获得0-1的随机数 
 i = Mathceil(i * 10) //乘以10并向上去整 
 var words = ['龙', '一', '万', '千', '浩', '金', '得', '而', '可', '人']; 
 var word = words[i]; 
 wxrequest({ 
  url: 'http://apiavatardatacn/ChengYu/Search?key=77f072d28eb141c8b6dda145ca364b92&keyWord=' + word, 
 
  complete: function (res) { 
  if (resdatareason == 'Succes') { 
   setTimeout(function () { 
   _thissetData({ 
    words: resdataresult 
   }) 
   }, 2000) 
  } 
  setTimeout(function () { 
   _thissetData({ 
   refreshing: false 
   }) 
  }, 2500) 
  } 
 }) 
 }, 
 start: function (e) { 
 var startPoint = etouches[0] 
 var clientY = startPointclientY; 
 thissetData({ 
  clientY: clientY, 
  refreshHeight: 0 
 }) 
 }, 
 end: function (e) { 
 var endPoint = echangedTouches[0] 
 var y = (endPointclientY - thisdataclientY) * 6; 
 if (y > 50) { 
  y = 50; 
 } 
 thissetData({ 
  refreshHeight: y 
 }) 
 }, 
 move: function (e) { 
 consolelog("下拉滑动了") 
 } 
}) 
 
/** 
 * 旋转上拉加载图标 
 */ 
function updateRefreshIcon() { 
 var deg = 0; 
 var _this = this; 
 consolelog('旋转开始了') 
 var animation = wxcreateAnimation({ 
 duration: 1000 
 }); 
 
 var timer = setInterval(function () { 
 if (!_thisdatarefreshing) 
  clearInterval(timer); 
 animationrotateZ(deg)step();//在Z轴旋转一个deg角度 
 deg += 360; 
 _thissetData({ 
  refreshAnimation: animationexport() 
 }) 
 }, 1000); 
}

2.index.wxml

<!--indexwxml--> 
 <view class="refresh-block" style="height: {{refreshHeight}}px;" wx:if="{{refreshing}}"> 
 <image animation="{{refreshAnimation}}" src="/images/refreshpng"></image> 
 </view> 
<scroll-view scroll-y="true" style="height: {{windowHeight}}px;" bindscroll="scroll" bindscrolltolower="lower" bindscrolltoupper="upper" 
catchtouchmove="move" catchtouchstart="start" catchtouchend="end" 
> 
<block wx:for="{{words}}"> 
  <view class="item-style">{{itemname}}</view> 
</block> 
</scroll-view>

3.index.wxss

/**indexwxss**/ 
item-style{ 
 padding: 30rpx; 
 font-size: 40rpx; 
 text-align: center; 
 border-top: 2rpx solid #eee; 
} 
refresh-block { 
 padding: 15px; 
 text-align: center 
} 
refresh-block image { 
 width: 30px; 
 height: 30px; 
}

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

Javascript 相关文章推荐
js模拟类继承小例子
Jul 17 Javascript
jQuery表单验证插件formValidator(改进版)
Feb 03 Javascript
html5+javascript制作简易画板附图
Apr 25 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
判断数组是否包含某个元素的js函数实现方法
May 19 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
浅谈vuex的基本用法和mapaction传值问题
Nov 08 Javascript
微信小程序-消息提示框实例
Nov 24 #Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 #Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 #Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 #Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 #Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 #Javascript
BootStrap树状图显示功能
Nov 24 #Javascript
You might like
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
node使用request请求的方法
2019/12/20 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
解决Django连接db遇到的问题
2019/08/29 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
计算机专业个人求职信范例
2013/09/23 职场文书
配件采购员岗位职责
2013/12/03 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
科学发展观演讲稿
2014/09/11 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL