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

方法一

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

详情见 scroll-view 组件

直接上代码

注意使用竖向滚动时,需要给 <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 页面

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

{"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();}})},

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

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

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

  1. 微信小程序下拉刷新真机没效果_微信小程序 下拉刷新 上拉加载(示例代码)

    1.下拉刷新 小程序页面集成了下拉功能,并提供了接口,我们只需要一些配置就可以拿到事件的回调. 1. 需要在 .json 文件中配置. 如果配置在app.json文件中,那么整个程序都可以下拉刷新.如 ...

  2. 微信小程序 - 为何setData到页面上有的加分号

    1 Page({ 2 3 /** 4 * 页面的初始数据 5 */ 6 data: { 7 8 }, 9 10 /** 11 * 生命周期函数--监听页面加载 12 */ 13 onLoad: fun ...

  3. android商品数量加减,微信小程序实现一个简单的商品数量加减案例

    简介 这是一个用微信小程序原生代码实现的数量加减demo,主要是用于商品购物车或者商品详情修改数量使用,很简单哦~~~. 核心js方法说明addCount(增加数量) delCount (减少数量) ...

  4. 微信小程序实现下拉刷新

    微信小程序实现下拉刷新 配置json文件 在js文件中写下拉刷新方法 注意 配置json文件 如果需要全局使用下拉刷新就在app.json中设置 如果为单页面使用则在页面json设置即可 " ...

  5. vue uniapp 微信小程序 搜索下拉框 模糊搜索

    vue uniapp 微信小程序 搜索下拉框 模糊搜索 话不多说 直接贴代码 template <template><view class="index"> ...

  6. php 类似微信下拉菜单,微信小程序模拟下拉菜单开发实例

    本文主要和大家分享微信小程序模拟下拉菜单开发实例,希望能帮助到大家. 一.知识点 1.实现动态显示和隐藏某个控件 列表1data:{ open:false }, showitem:function() ...

  7. 微信小程序 select 下拉框组件

    一.源码地址 GitHub - imxiaoer/WeChatMiniSelect: 微信小程序 select 下拉框组件 二.效果图 录屏图片质量较差,所以大家会看到残影(捂脸) 三.组件源码 1. ...

  8. 微信小程序scroll-view实现自定义刷新

    微信小程序scroll-view实现自定义刷新@TOC 先说原生页面级的刷新 通常我们可以利用微信小程序的onPullDownRefresh函数(下拉刷新监听函数)和onReachBottom函数(上 ...

  9. 微信小程序分享海报/卡片 生成时一直加载可能存在的问题

    微信小程序分享海报/卡片 生成时一直加载可能存在的问题 很多时候,开发者在调试小程序的分享图时,总是会遇到不能正常生成的问题,这里面还是有许多的坑.这一次就把我个人所知道的问题分享一下. 第一种情况: ...

最新文章

  1. Simple Dynamic Strings(SDS)源码解析和使用说明二
  2. 关于一些Linux SVN的安装使用
  3. 表空间迁移(transport tablespace)测试案例
  4. 哈工大计算机专研和学研的区别,哈工大教授发表SCI和核心期刊共26篇,发明专利6项,在交叉学科领域大放异彩!...
  5. php cdi_本机CDI限定词:@Any和@Default
  6. 一步步编写操作系统 24 编写内核加载器
  7. 在Zabbix中添加交换机端口监控
  8. PyTorch学习笔记(六):PyTorch进阶训练技巧
  9. day17 10.jdbc的crud操作
  10. 【手写数字识别】基于matlab GUI知识库手写数字识别(写字板+图片)【含Matlab源码 1227期】
  11. 一家麻辣烫店如何实现月净利五万
  12. 计算机英语面试翻译,英语面试问题及回答带翻译
  13. TrueCrypt加密:TrueCrypt Format创建加密卷(1)
  14. 苹果系统安全吗?7种方法保护自己的隐私
  15. 使用微信小程序editor富文本编辑器(爬坑要点)
  16. 使用 Nginx 如何部署 web 项目
  17. c# picturebox控件的使用方法介绍
  18. 门户网站建设有哪些类型?
  19. sd卡中的文件夹删除了怎么恢复,SD卡删除的文件如何恢复
  20. [AI教程]TensorFlow入门:手势数字识别

热门文章

  1. mybatis查询返回空,SQL数据库执行有数据!
  2. JavaScript this 关键字
  3. gradle sync failed——Android studio 突然就无法自动下载gradle了
  4. Android studio 创建kotlin工程
  5. android base64encoder 不存在
  6. 实验5 编写、调试具有多个段的程序
  7. 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)
  8. git 多用户多仓库配置
  9. 从面试官角度告诉大家如何准备项目方面的描述
  10. laravel5.4之artisan使用总结一