微信小程序实现上拉加载下拉刷新

使用小程序默认提供方法。

(1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载的动画可能会是白色背景,会看不清。

{
"usingComponents": {
"annicate": "/components/annicate/index"
},
"navigationBarTitleText": "通告列表",
"enablePullDownRefresh": true,
"backgroundColor": "#ffffff",
"backgroundTextStyle": "dark"
}

(2). 在 js 中处理逻辑

/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
// 标题栏显示刷新图标,转圈圈
wx.showNavigationBarLoading()
// 请求最新数据
this.initDate(true);
setTimeout(() => {
// 标题栏隐藏刷新转圈圈图标
wx.hideNavigationBarLoading()
}, );
}, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
setTimeout(() => {
this.initDate();
}, );
},

data 中

loading: false,                         // 是否正在加载中
loaded: false, // 是否加载完全部数据
/**
* 初始化数据
*/
initDate: function (isPage) {
var that = this;
// 加载第一页
if (isPage === true){
that.setData({
notice_list: [],
page:
});
} else {
var num = that.data.page + ;
if (num <= that.data.totalPage) {
that.setData({
page: num
});
} else if (num > that.data.totalPage) {
that.setData({
loaded: true
});
}
} if (that.data.loading) return;
if (that.data.loaded) return; var json = {
keywords: that.data.keywords
};
wx.showLoading({
title: '加载中',
}) that.setData({ loading: true, loadTitle: '' });
noticeList(json).then(res => {
let notice_list = app.SplitArray(res.data.notice_list.list, that.data.notice_list);
wx.hideLoading()
that.setData({
notice_list: notice_list,
loading: false,
loadTitle: that.data.page == res.data.notice_list.total_page ? '已全部加载' : '加载更多',
totalPage: res.data.notice_list.total_page
});
}).catch(err => {
that.setData({ loading: false, loadTitle: '加载更多' });
});;
},

页面中

<view class='annicate_wrap'>
<annicate bindtap='detailFun' wx:for="{{notice_list}}" wx:key="index" jsonDate="{{item}}"></annicate>
<view class='loadingicon acea-row row-center-wrapper' wx:if='{{notice_list.length > 0}}'>
<text class='loading iconfont icon-jiazai' hidden='{{loading==false}}'></text>{{loadTitle}}
</view>
</view>
app.SplitArray是小程序连接两个数组的方法
app.js 中
/*
* 合并数组
* @param array list 请求返回数据
* @param array sp 原始数组
* @return array
*/
SplitArray: function(list, sp) {
return util.SplitArray(list, sp)
}

untils 中

/*
* 合并数组
*/
const SplitArray = function (list, sp) {
if (typeof list != 'object') return [];
if (sp === undefined) sp = [];
for (var i = ; i < list.length; i++) {
sp.push(list[i]);
}
return sp;
}

微信小程序上拉加载下拉刷新的更多相关文章

  1. 微信小程序上滑加载更多

    onReachBottom: function () { var that = this var limit = that.data.limit var count = that.data.count ...

  2. Vue mint ui用在消息页面上拉加载下拉刷新loadmore 标记

    之前总结过一个页面存在多个下拉加载的处理方式,今天再来说一下在消息页面的上拉加载和下拉刷新,基本上每个app都会有消息页面,会遇到这个需求 需求:每次加载十条数据,上拉加载下拉刷新,并且没有点击查看过 ...

  3. 上拉加载下拉刷新控件WaterRefreshLoadMoreView

    上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on ...

  4. RecyclerView 上拉加载下拉刷新

    RecyclerView 上拉加载下拉刷新 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/teach_s ...

  5. APICloud上啦加载下拉刷新模块

    apicloud有自带的上啦加载下拉刷新,当让也可以用第三方或者在模块库里面找一个使用 一.下拉刷新,一下代码写在 apiready = function (){} 里面 apiready = fun ...

  6. mui scroll和上拉加载/下拉刷新

    mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/*   */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...

  7. 微信小程序---》分包加载

    [小程序]---分包加载   一.分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载 在构建小程序分包项目时,构建会输出一个或多个分包.每个使 ...

  8. 微信小程序 - 上拉加载下拉刷新

    点击下载示例:小程序 - 上拉刷新下拉加载

  9. 微信小程序中如何实现分页下拉加载?(附源码)

    转眼间坚持写教你微信小程序系列已经有十节系列课程了,每天的工作压力繁重,小女子也不知道自己还能坚持这样的系列教程多久.只希望每篇教程真的对大家有帮助.这节课我们要介绍的就是如何实现分页的下拉加载,我们 ...

随机推荐

  1. 后端技术杂谈10:Docker 核心技术与实现原理

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  2. WebGIS常用代码集锦

    一.普通代码 1.坐标转换 ol.proj.transform(coordinate, source, destination) ol.proj.transform(coordinate, 'EPSG ...

  3. 如何正确安装Mysql

    1.官网去下载 2.针对操作系统的不同下载不同的版本  安装步骤: 第一步解压文件:位置为你想要安装的盘符第二步加载环境变量加载的是bin目录第三步初始化:在cmd终端中输入 mysqld --ini ...

  4. 常用的Android关键词定位方法

    1字符串,特征字 根据程序运行中出现的特征字词进行搜索,从而获取定位到程序的相关位置之中.以前用 得比较多,不过现在一般难以找到想要的关键词.有时候需要对特征字进行拆分来进行搜索.才 能获得一点提示. ...

  5. spss如何选择需要的变量?

    spss如何选择需要的变量? 今天一位网友问我,spss如何在许多字段(变量)中选择我需要的字段,而不显示其他的字段呢? 这个问题问的很好,在实际的数据分析或者挖掘的过程中,都需要用这个来找出对商业问 ...

  6. Altium Designer(AD)使用笔记

    在PCB中间打洞,螺丝孔等 制作PCB螺丝孔 1 在Keepout层首先绘制一个圆形(矩形): 2 在绘制PCB时,选中该图形,Tool>>Convert>>create bo ...

  7. ELK+Filebeat (2)

    ELK+Filebeat收集多台机器不同日志 采坑:在使用了6.0版本的ELK以后,使用如上配置,if [type]匹配不到在filebeat里面使用document_type定义的字符串.在多次调试 ...

  8. vuejs基础-跑马灯效果

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  9. 【Spring Boot项目】Win7+JDK8+Tomcat8环境下的War包部署

    一.pom.xml及启动类修改 pom.xml Step1:指定打包类型 <!-- 打包类型 jar 或 war --> <packaging>war</packagin ...

  10. 【问题解决方案】在某个文件夹下打开命令提示符或Git Bash

    参考链接: 百度知道:怎么在某个文件夹下打开命令提示符 问题: 当文件夹比较深时,一直cd进入文件夹内部就显得非常迟缓了. 解决: cmd:打开所需文件夹路径后,在上面的路径显示框中输入CMD,然后回 ...