vant实现下拉刷新和上拉加载_微信小程序 - 实现下拉刷新、上拉加载

在小程序开发中使用下拉刷新和上拉加载非常多,比如常用的展示型首页,而实现这个功能有两种形式,第一种是使用 scroll-view 组件,第二种是不使用 scroll-view 组件而让整个页面刷新,那就分别都在此简单分享下。

方法一

在 scroll-view 里设定 bindscrolltoupper 和 bindscrolltolower 监听页面滑动到顶部和底部,调用两个方法然后分别根据自己业务逻辑处理即可。

详情见 scroll-view 组件

a09d0c85762eb2b24ab99940c27cce3d.png

直接上代码

注意使用竖向滚动时,需要给 <scroll-view/> 一个固定高度才能监听滚动事件,通过 WXSS 设置 height 。

index.wxml

<!--index.wxml-->
<view><scroll-view scroll-top="{{scrollTop}}" scroll-y="true" style="height:{{scrollHeight}}px;" class="list" bindscrolltolower="bindDownLoad" bindscrolltoupper="topLoad"  bindscroll="scroll"><view class="item" wx:for="{{list}}"><image class="img" src="{{item.pic_url}}"></image><view class="text"><text class="title">{{item.name}}</text><text class="description">{{item.short_description}}</text></view></view></scroll-view><view class="body-view"><loading hidden="{{hidden}}" bindchange="loadingChange">加载中...</loading></view>
</view>

index.js

var url = "https://xxx";
var page = 1;
var page_size = 5;// 请求数据
var loadMore = function (that) {that.setData({hidden: true});wx.request({url: url,data: {page: page,page_size: page_size,},header: {'content-type': 'application/json'},success: function (res) {var list = that.data.list ;for(var i = 0; i < res.data.data.length; i++){list.push(res.data.data[i]);}that.setData({list: list});page++;that.setData({hidden: false});}});
}Page({data: {hidden: true,list: [],scrollTop: 0,scrollHeight: 0},onLoad: function () {//注意 scroll-view 必须要设置高度才能监听滚动事件,需要在页面的onLoad事件中给scroll-view的高度赋值var that = this;wx.getSystemInfo({success: function (res) {that.setData({scrollHeight: res.windowHeight});}});loadMore(that);},//下拉加载bindDownLoad: function () {var that = this;loadMore(that);},scroll: function (event) {//该方法绑定了页面滚动时的事件,这里记录了当前的 position.y 的值,为了请求数据之后把页面定位到这里来。this.setData({scrollTop: event.detail.scrollTop});},//上拉刷新topLoad: function (event) {var that = this;//数据刷新page = 0;this.setData({page: 1,list: [],scrollTop: 0});loadMore(that);}
})

方法二

整个页面的刷新,使用 onPullDownRefresh 和 onReachBottom 。但是在小程序里,用户顶部下拉是默认禁止的,我们需要把他设置为启用,在 app.json 中的设置对所有页面有效,在单独页面设置则对当前页面有效。

详情见 Page 页面

9f93778a0140dd1fa11cc806a5079b4b.png

有人说设置完之后可以下拉,但是看不到图标,需要再设置下拉 loading 样式。

c47cdc990e920c84f55fcd495c5b24a0.png
{"window":{"backgroundTextStyle": "dark","enablePullDownRefresh": true}
}

直接上代码

下拉刷新

  // 下拉刷新  onPullDownRefresh: function () {// 显示顶部刷新图标  wx.showNavigationBarLoading();var that = this;wx.request({url: 'https://xxx',method: "POST",data:{page : page,page_size : page_size,},header: {'content-type': 'application/json'},success: function (res) {that.setData({moment: res.data.data});// 设置数组元素  that.setData({moment: that.data.moment});// 隐藏导航栏加载框  wx.hideNavigationBarLoading();// 停止下拉动作  wx.stopPullDownRefresh();}})},

上拉加载更多

  //上拉加载onReachBottom: function () {var that = this;// 显示加载图标  wx.showLoading({title: '加载中...',})page++;;wx.request({url: 'https://xxx/',method: "POST",data:{page : page,page_size : page_size,},header: {'content-type': 'application/json'},success: function (res) {// 回调函数  var moment_list = that.data.moment;for (var i = 0; i < res.data.data.length; i++) {moment_list.push(res.data.data[i]);}// 设置数据  that.setData({moment: that.data.moment})// 隐藏加载框  wx.hideLoading();}})},

参考以上例子就可以下拉刷新、上拉加载, 示例仅提供一个思路,具体的实现需要开发者根据自己项目来定。

码字不易,转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经验证过的跨线程更新辅助类MyInvokeHelper

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reflection; using System.Windows.Forms;namespace Extension.MyDll {/// <summary>/// 辅助类&#xff1a;跨线程更新控件/// &l…

02函数-03-闭包

1、闭包的概念闭包是一种特殊的程序结构&#xff0c;即 函数A中定义了另一个函数a&#xff0c;内部函数a引用了外部函数A的参数和局部变量&#xff0c;最终A会返回一个保存了相关参数和变量的函数a。简洁地说&#xff0c;外层函数将保存了信息的可执行内层函数作为结果返回。来…

mapper同时添加数据只能添加一条_springcloud项目搭建第二节:eureka+数据库

在上一节搭建的项目基础上&#xff0c;在父项目spring-cloud的pom文件中添加mapper启动器和mysql驱动的配置&#xff0c;如果项目中使用lombok也可以引用&#xff0c;这里需要注意的是lombok引用的配置不在dependencyManagement结构中&#xff0c;这时为什么呢&#xff0c;因为…

C#控件命名规范

类 型 前 缀 示 例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calendar cal calMettingDates CheckBox chk chkBlue CheckBoxList chkl chklFavColors DropDownList drop dropCountries FileUpLoad fup fupImage …

在centOS7.2里安装virtualenv和flask

1&#xff09; 安装pip工具 #wget https://bootstrap.pypa.io/get-pip.py #python get-pip.py 2&#xff09; 安装virtualenv&#xff0c;并创建一个开发环境 #pip install virtualenv #mkdir rongtangzi #创建一个项目 #cd rongtangzi #virtualenv env1 #…

事务连接中断_一文搞懂分布式事务-CAP理论

互联网系统中&#xff0c;分布式事务是无法避免的&#xff0c;目前多数解决方案是BASE理论&#xff0c;最终一致性&#xff0c;结合事务补偿。1.什么是CAP理论。CAP理论&#xff0c;又称为布鲁尔定理&#xff0c;是加州大学伯克利分校的计算机科学家埃里克.布鲁尔(Eric Brewer)…

C# WinForm中获取当前程序运行目录的方法

C# WinForm中获取当前程序运行目录的方法&#xff1a; “AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径&#xff0c;最后包含“\”&#xff1b;“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径&#xff0c…

网络攻防 第四周学习总结

教材学习内容总结 第四章主要介绍了网络嗅探和协议分析网络嗅探是一种常用的窃听技术&#xff0c;它利用计算机的网络接口截获目的地为其他计算机的数据报文&#xff0c;以监听数据流中所包含的用户账户密码或私密信息等。 网络嗅探具有很强的隐蔽性&#xff0c;往往让网络信息…

获取内存_如何获取一个进程所占用的内存

推荐观看&#xff1a;BATJ面试官最喜欢问的&#xff1a;多线程、线程并发面试题详解&#xff08;volatileThreadLocalSleep&#xff09;_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com通过 ps 可以获知一个进程所占用的内存$ ps -O rss -p 3506PID RSS S TTY …

461. Hamming Distance【数学|位运算】

2017/3/14 15:23:55 The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two integers x and y, calculate the Hamming distance. 题目要求&#xff1a;求两个数字二进制位中同一位置不同bit的个数…

中的ama格式_想发SCI?期刊引用格式选好了没?

我~芳~老师~又回来开坑了哈哈哈哈哈&#xff01;&#xff01;&#xff01;对于一心想要冲向SCI、EI顶峰&#xff0c;拉都拉不住的同学来说&#xff0c;我们需要把论文中的每一个细节都抠得死死的。合乎规范地引用科学期刊&#xff08;Scientific Journal&#xff09;绝对是最重…

着陆攻击LAND Attack

着陆攻击LAND Attack着陆攻击LAND Attack也是一种拒绝服务攻击DOS。LAND是Local Area Network Denial的缩写&#xff0c;意思是局域网拒绝服务攻击&#xff0c;翻译为着陆攻击只是一种错误的理解。攻击原理为&#xff0c;攻击机向目标机发送一个SYN的TCP包&#xff0c;包中的源…

伺服怎么接单相220伏_乐利网带你认识伺服电机及工作原理

什么是伺服电机&#xff0c;应该听过人的不少&#xff0c;没听过的也占不少数&#xff0c;其实&#xff0c;伺服电机是指在伺服系统中控制机械元件运转的发动机&#xff0c;是一种补助马达间接变速装置。伺服电机可使控制速度&#xff0c;位置精度非常准确&#xff0c;可以将电…

BZOJ 1877 拆点费用流

思路&#xff1a; 呃 水题不解释 行么,, //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define mem(x,y) memset(x,y,sizeof(x)) const int N88888,M444; int n,m,xx,yy,zz,edg…

插入始终是1_OneNote使用小记(1)——针对PPT做笔记及最合适的PPT插入方式

本人经常使用OneNote进行上课笔记的记录&#xff0c;本文大概总结一下我是如何在上课时针对PPT进行笔记记录的&#xff0c;以及非常重要的PPT插入所占空间的问题。设备&#xff1a;普通笔记本电脑&#xff0c;无触控&#xff0c;故不使用绘图功能软件&#xff1a;OneNote2016&a…

Cocos2dx 3.11版本 视频添加跳过按钮

最近比较忙&#xff0c;这里不写原理只写代码&#xff0c;以后再补。 目前跨平台处理&#xff0c;只在Android和ios实现。其他平台暂时未加。 1.frameworks/cocos2d-x/cocos/ui/UIVideoPlayer.h 添加一个函数 virtual void addSkipButton(); 2.在ios和Android实现的地方实现以…

有效数据外含有额外数据_Excel|应用数据有效性规范数据录入

【问题】EXCEL输入数据时&#xff0c;经常会输入不规范或者无效的数据&#xff0c;对数据的统计工作带来很大的麻烦。数据验证能够建立特定的规则&#xff0c;限制单元格可以输入的内容&#xff0c;从而规范数据输入&#xff0c;提高数据统计与分析效率。数据验证&#xff0c;在…

怎么实现hover_web前端CSS实现一个粒子动效的按钮

按钮(button)可能是网页中最常见的组件之一了&#xff0c;大部分都平淡无奇&#xff0c;如果你碰到的是一个这样的按钮&#xff0c;会不会忍不住多点几次呢&#xff1f;通常这类效果第一反应可能就是借助canvas了&#xff0c;比如下面这个案例点击预览(建议去codepen原链接点击…

BZOJ 2242: [SDOI2011]计算器 [快速幂 BSGS]

2242: [SDOI2011]计算器 题意&#xff1a;求\(a^b \mod p,\ ax \equiv b \mod p,\ a^x \equiv b \mod p\)&#xff0c;p是质数 这种裸题我竟然WA了好多次 第三个注意判断a和b整除p的情况 #pragma GCC optimize ("O2") #include <iostream> #include <cstdio…

获取某一列_Excel VBA 8.2 获取多列唯一值,不用肉眼,VBA帮你快速搞定

前景提要(文末提供源码下载)昨天我们学习了针对单列的数据进行获取唯一值的方法&#xff0c;今天我们提升下难度&#xff0c;来尝试下获取已多列为参照物&#xff0c;获取唯一值的方法&#xff0c;昨天有很多小伙伴说还可以用字典的方法更加的简单&#xff0c;其实&#xff0c;…