当前位置:   article > 正文

微信小程序入门五上滑加载下拉刷新_小程序scroll-view上拉下拉代码

小程序scroll-view上拉下拉代码

 

之前谈到文章列表的数据加载,是一次性全部加载,这样是不友好的。这章介绍加载和刷新。

效果图:

先介绍在IDE中,怎么模拟上滑这个操作。开始我是用鼠标点击文章列表,然后先上移动。结果一直没有结果,以为是代码写的有问题。其实并不是,上滑,下拉这个操作,只需要用鼠标的滚轮即可。

首先,我们先完成上滑和下拉这个功能。

list.wxml文件:

 

  1. <view class="page">
  2. <view class="page__bd">
  3. <!--用name 定义模版-->
  4. <template name="msgTemp">
  5. <!--
  6. 1. scaleToFill : 图片全部填充显示,可能导致变形 默认
  7. 2. aspectFit : 图片全部显示,以最长边为准
  8. 3. aspectFill : 图片全部显示,以最短边为准
  9. 4. widthFix : 宽不变,全部显示图片
  10. -->
  11. <view class="weui-panel__bd">
  12. <navigator url="../detail/detail?id={{id}}" class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
  13. <view class="weui-media-box__hd weui-media-box__hd_in-appmsg">
  14. <image class="weui-media-box__thumb" src="{{src}}" style="width: 60px; height: 60px;"/>
  15. </view>
  16. <view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
  17. <view class="weui-media-box__title">{{title}}</view>
  18. <view class="weui-media-box__desc">{{time}}</view>
  19. </view>
  20. </navigator>
  21. </view>
  22. </template>
  23. <scroll-view scroll-top="{{scrollTop}}" style="height: {{windowHeight}}px; width: {{windowWidth}}px;" scroll-y="true" bindscrolltoupper="pullDownRefresh" bindscroll="scroll" bindscrolltolower="pullUpLoad" class="weui-panel weui-panel_access">
  24. <view class="weui-panel__hd">文章列表</view>
  25. <view wx:for-items="{{msgList}}" wx:key="{{item.id}}">
  26. <view class="kind-list__item">
  27. <!--用is 使用模版-->
  28. <template is="msgTemp" data="{{...item}}"/>
  29. </view>
  30. </view>
  31. </scroll-view>
  32. <view>
  33. <loading hidden="{{hidden}}" bindchange="loadingChange">
  34. 加载中...
  35. </loading>
  36. </view>
  37. </view>
  38. <view class="page__ft">
  39. </view>
  40. </view>

 

 

在原来的基础上,多用了一个scroll-view (官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/component/scroll-view.html) 我是加载文章列表的上面,

第一步:要设置允许它纵向滚动 scroll-y = true ,

第二步:要给一个固定高度,文档中也明确要求了这点。这里是动态获取手机配置的高度和宽度。

第三步:要设置bindscrolltoupper (下拉) 和 bindscrolltolower (上滑) 响应的方法。

第四步:要设置 scroll-top (用于定位) 和 bindscroll (滚动的时候执行,和前者一起用可达到定位效果)

第五步:加载页面icon设置,直接copy即可。

 

list.js 文件:

 

  1. // pages/list/list.js
  2. var app = getApp();
  3. // 当前页数
  4. var pageNum = 1;
  5. // 加载数据
  6. var loadMsgData = function(that){
  7. that.setData({
  8. hidden:false
  9. });
  10. var allMsg = that.data.msgList;
  11. app.ajax.req('/itdragon/findAll',{
  12. "page":pageNum , "pageSize" : 6
  13. },function(res){
  14. // 不能直接 allMsg.push(res); 相当于list.push(list);打乱了结构
  15. for(var i = 0; i < res.length; i++){
  16. allMsg.push(res[i]);
  17. }
  18. that.setData({
  19. msgList:allMsg
  20. });
  21. pageNum ++;
  22. that.setData({
  23. hidden:true
  24. });
  25. });
  26. }
  27. Page({
  28. data:{
  29. msgList:[],
  30. hidden:true,
  31. scrollTop : 0,
  32. scrollHeight:0
  33. },
  34. onLoad:function(options){
  35. // 页面初始化 options为页面跳转所带来的参数
  36. var that = this;
  37. wx.getSystemInfo({
  38. success: function(res) {
  39. that.setData( {
  40. windowHeight: res.windowHeight,
  41. windowWidth: res.windowWidth
  42. })
  43. }
  44. });
  45. loadMsgData(that);
  46. },
  47. onReady:function(){
  48. // 页面渲染完成
  49. },
  50. onShow:function(){
  51. // 页面显示
  52. },
  53. // 下拉刷新数据
  54. pullDownRefresh: function() {
  55. var that = this;
  56. pageNum = 1;
  57. that.setData({
  58. msgList : [],
  59. scrollTop : 0
  60. });
  61. loadMsgData(that);
  62. },
  63. // 上拉加载数据 上拉动态效果不明显有待改善
  64. pullUpLoad: function() {
  65. var that = this;
  66. loadMsgData(that);
  67. },
  68. // 定位数据
  69. scroll:function(event){
  70. var that = this;
  71. that.setData({
  72. scrollTop : event.detail.scrollTop
  73. });
  74. },
  75. onHide:function(){
  76. // 页面隐藏
  77. },
  78. onUnload:function(){
  79. // 页面关闭
  80. }
  81. })


第一点:如果对 app.ajax.req 里面的方法看不懂,可以参考:微信小程序request请求 (有对应接口源码)

 

第二点:因为是分页查询,需要把上一次查询内容保存,所以用list.push 拼接。

第三点:每次查询后,页数都要加一,并且加载前要显示加载的icon,加载结束要隐藏。

第四点:页面加载初始化获取设置信息,官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/systeminfo.html#wxgetsysteminfoobject

第五点:下拉的逻辑,将页数设置为一,并清空msgList 内容,定位距顶部0px,最后调用加载数据的方法。

第六点:上滑的逻辑,直接调用。因为定位点在scorll方法中已经赋值。

第七点:如果调用我的接口,是不能用appid的,需要重新创建一个项目,选择无appid。

 

这样加载和刷新就完成了,虽然对刷新很不满意,网上找了很多例子都是这样,如果有好的效果,请赐教。下一章介绍本地缓存的功能。

微信小程序入门教程集合:微信小程序入门教程全集

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/773144
推荐阅读
相关标签
  

闽ICP备14008679号