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


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遍历input取得input的name
Apr 27 Javascript
IE6下JS动态设置图片src地址问题
Jan 08 Javascript
JS画线(实例代码)
Nov 20 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
JS中常用的输出方式(五种)
Jun 12 Javascript
jQuery查找节点并获取节点属性的方法
Sep 09 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
简单的三步vuex入门
May 20 Javascript
如何使用puppet替换文件中的string
Dec 06 Javascript
node解析修改nginx配置文件操作实例分析
Nov 06 Javascript
Vuex实现数据共享的方法
Dec 20 Javascript
JS实现canvas简单小画板功能
Jun 23 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
javascript使用appendChild追加节点实例
2015/01/12 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
python选择排序算法的实现代码
2013/11/21 Python
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
python plotly绘制直方图实例详解
2019/07/22 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
校领导推荐信
2013/11/01 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
4s店活动策划方案
2014/08/25 职场文书
普通党员个人整改措施
2014/10/27 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
python接口测试返回数据为字典取值方式
2022/02/12 Python