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


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 网站换肤功能实现代码
Nov 02 Javascript
jquery checkbox实现单选小例
Nov 27 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
详解js中的apply与call的用法
Jul 30 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
详解vue表单——小白速看
Apr 08 Javascript
vue input输入框关键字筛选检索列表数据展示
Oct 26 Javascript
详解vue 组件的实现原理
Nov 12 Javascript
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
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创建动态图像
2006/10/09 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
Node.js插件的正确编写方式
2014/08/03 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
Python过滤序列元素的方法
2020/07/31 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
为什么要使用servlet
2016/01/17 面试题
标准毕业生自荐信范文
2013/11/04 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
技术学校毕业生求职信分享
2013/12/02 职场文书
个人求职信范文分享
2014/01/31 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
单位接收函格式
2015/01/30 职场文书
Python语言中的数据类型-序列
2022/02/24 Python