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


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 相关文章推荐
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
Dec 27 Javascript
js局部刷新页面时间具体实现
Jul 04 Javascript
调用jQuery滑出效果时闪烁的解决方法
Mar 27 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
Oct 26 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
利用PM2部署node.js项目的方法教程
May 10 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
layui 弹出层值回传解决方式
Nov 14 Javascript
详解vue-flickity的fullScreen功能实现
Apr 07 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中Memcache操作类及用法实例
2014/12/12 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
Angular封装表单控件及思想总结
2019/12/11 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
Python自动重试HTTP连接装饰器
2015/04/28 Python
python连接字符串的方法小结
2015/07/13 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
将python代码和注释分离的方法
2018/04/21 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python并发和异步编程实例
2018/11/15 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Python模块future用法原理详解
2020/01/20 Python
Python 如何展开嵌套的序列
2020/08/01 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
拓展训练激励口号
2014/06/17 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA