微信小程序页面滑动屏幕加载数据效果


Posted in Javascript onNovember 16, 2020

滑动屏幕加载数据是任何小程序中都会用到的功能,本文我就将这个功能整理给大家,希望对大家有意。我们先看看效果图:

微信小程序页面滑动屏幕加载数据效果

创建目录

首先我们现在项目中创建资讯目录,以下是我自己创建的目录,大家可以根据自己的需求创建。如图所示:

微信小程序页面滑动屏幕加载数据效果

创建lists.js文件

以下是lists.js代码

var app = getApp()
Page({
 data: {
 newsList: [],
 lastid: 0,
 toastHidden: true,
 confirmHidden: true,
 isfrist: 1,
 loadHidden: true,
 moreHidden: 'none',
 msg: '没有更多文章了'
 },
 loadData: function (lastid) {
 //显示出加载中的提示
 this.setData({ loadHidden: false })
 var limit = 10
 var that = this
 wx.request({
  url: 'http://127.0.0.1:9090/hpm_bill_web/news/getnewslist', //数据接口
  data: { lastid: lastid, limit: limit },
  header: {
  'Content-Type': 'application/json'
  },
  success: function (res) {
  if (!res.data) {
   that.setData({ toastHidden: false })
   that.setData({ moreHidden: 'none' })
   return false
  }
  var len = res.data.length
  var oldLastid = lastid
  if(len != 0) {
   that.setData({ lastid: res.data[len - 1].id })
  } else {
   that.setData({ toastHidden: false})
  }
  var dataArr = that.data.newsList
  var newData = dataArr.concat(res.data);
   if (oldLastid == 0) {
   wx.setStorageSync('CmsList', newData)
   }
  that.setData({ newsList: newData })
  that.setData({ moreHidden: '' })
  },
  fail: function (res) {
  if (lastid == 0) {
   var newData = wx.getStorageSync('CmsList')
   if(newData) {
   that.setData({ newsList: newData })
   that.setData({ moreHidden: '' })
   var len = newData.length
   if (len != 0) {
    that.setData({ lastid: newData[len - 1].id })
   } else {
    that.setData({ toastHidden: false })
   }
   console.log('data from cache');
   }
   } else {
   that.setData({ toastHidden: false, moreHidden: 'none', msg: '当前网格异常,请稍后再试' })
   }
  },
  complete: function () {
  //显示出加载中的提示
  that.setData({ loadHidden: true })
  }
 })
 },
 loadMore: function (event) {
 var id = event.currentTarget.dataset.lastid
 var isfrist = event.currentTarget.dataset.isfrist
 var that = this
 wx.getNetworkType({
  success: function (res) {
  var networkType = res.networkType // 返回网络类型2g,3g,4g,wifi
  if (networkType != 'wifi' && isfrist == '1') {
   that.setData({ confirmHidden: false })
  }
  }
 })
 this.setData({ isfrist: 0 })
 this.loadData(id);
 },
 onLoad: function () {
 var that = this
 this.loadData(0);
 },
 toastChange: function () {
 this.setData({ toastHidden: true })
 },
 modalChange: function () {
 this.setData({ confirmHidden: true })
 }
})

创建页面文件(lists.wxml)

<view class="warp">
 <!-- 文章列表模板 begin -->
 <template name="items">
 <navigator url="../../pages/detail/detail?id={{id}}" hover-class="navigator-hover">
  <view class="imgs">
  <image src="{{image}}" class="in-img" background-size="cover" model="scaleToFill"></image>
  </view>
  <view class="infos">
  <view class="title">{{name}}</view>
  <view class="dates">{{createtime}}</view>
  </view>
 </navigator>
 </template>
 <!-- 文章列表模板 end -->
 <!-- 循环输出列表 begin -->
 <view wx:for="{{newsList}}" class="list">
 <template is="items" data="{{...item}}" />
 </view>
 <!-- 循环输出列表 end -->
<loading hidden="{{loadHidden}}" bindchange="loadChange">
 数据加载中...
</loading>
 <view bindtap="loadMore" data-lastid="{{lastid}}" data-isfrist="{{isfrist}}" class="loadMore" style="display:{{moreHidden}}">加载更多</view>
 <toast hidden="{{toastHidden}}" bindchange="toastChange" duration="3000">{{msg}}</toast>
 <modal title="温馨提示" no-cancel confirm-text="明确" cancel-text="关闭" hidden="{{confirmHidden}}" bindconfirm="modalChange" bindcancel="modalChange">你当前不在在WIFI网格下下,会产生流量费用</modal>
</view>

创建页面样式(lists.wxss)

.warp {height:100%;display:flex;flex-direction: column;padding:20rpx;}
navigator {overflow: hidden;}
.list {margin-bottom:20rpx;height:200rpx;position:relative;}
.imgs{float:left;}
.imgs image {display:block;width:200rpx;height:200rpx;}
.infos {float:left;width:480rpx;height:200rpx;padding:20rpx 0 0 20rpx}
.title {font-size:20px; font-family: Microsoft Yahei}
.dates {font-size:16px;color: #aaa; position: absolute;bottom:0;}
.loadMore {text-align: center; margin:30px;color:#aaa;font-size:16px;}

通过以上代码就能实现在屏幕上滑动显示数据的功能。

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

Javascript 相关文章推荐
jQuery ajax serialize()方法的使用以及常见问题解决
Jan 27 Javascript
jQuery的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 Javascript
鼠标滑过出现预览的大图提示效果
Feb 26 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
Sep 06 Javascript
vue.js的提示组件
Mar 02 Javascript
VUE实现日历组件功能
Mar 13 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
Vue 的双向绑定原理与用法揭秘
May 06 Javascript
Angularjs中数据绑定的实例详解
Aug 25 #Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 #Javascript
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 #Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 #Javascript
Vue上传组件vue Simple Uploader的用法示例
Aug 25 #Javascript
DVA框架统一处理所有页面的loading状态
Aug 25 #Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 #Javascript
You might like
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
员工培训心得体会
2013/12/30 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
优秀食品类广告词
2014/03/19 职场文书
学生请假条
2014/04/11 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
2014年党总支工作总结
2014/12/18 职场文书
奖金申请报告模板
2015/05/15 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
英语教学课后反思
2016/02/15 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
如何通过一篇文章了解Python中的生成器
2022/04/02 Python