微信小程序之下拉加载和上拉刷新
微信小程序下拉加载和上拉刷新两种实现方法
方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新
首先要在json文件里设置window属性
属性 | 类型 | 描述 |
enablePullDownRefresh | Boolean | 是否开启下拉刷新,详见页面相关事件处理函数。 |
设置js里onPullDownRefresh和onReachBottom方法
属性 | 类型 | 描述 |
onPullDownRefresh | function | 页面相关事件处理函数——监听用户下拉动作 |
onReachBottom | function | 页面上拉触发底事件的处理函数 |
下拉加载说明:
当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。
- onPullDownRefresh(){
- console.log('--------下拉刷新-------')
- wx.showNavigationBarLoading() //在标题栏中显示加载
- wx.request({
- url: 'https://URL',
- data: {},
- method: 'GET',
- // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
- // header: {}, // 设置请求的 header
- success: function(res){
- // success
- },
- fail: function() {
- // fail
- },
- complete: function() {
- // complete
- wx.hideNavigationBarLoading() //完成停止加载
- wx.stopPullDownRefresh() //停止下拉刷新
- }
- })
方法二:
在scroll-view里设定bindscrolltoupper和bindscrolltolower实现微信小程序下拉
属性 | 类型 | 描述 |
bindscrolltoupper | EventHandle | 滚动到顶部/左边,会触发 scrolltoupper 事件 |
bindscrolltolower | EventHandle |
滚动到底部/右边,会触发 scrolltolower 事件 |
- index.wxml
- <!--index.wxml-->
- <view class="container" style="padding:0rpx">
- <!--垂直滚动,这里必须设置高度-->
- <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 = "http://www.imooc.com/course/ajaxlist";
- var page =0;
- var page_size = 5;
- var sort = "last";
- var is_easy = 0;
- var lange_id = 0;
- var pos_id = 0;
- var unlearn = 0;
- // 请求数据
- var loadMore = function(that){
- that.setData({
- hidden:false
- });
- wx.request({
- url:url,
- data:{
- page : page,
- page_size : page_size,
- sort : sort,
- is_easy : is_easy,
- lange_id : lange_id,
- pos_id : pos_id,
- unlearn : unlearn
- },
- success:function(res){
- //console.info(that.data.list);
- var list = that.data.list;
- for(var i = 0; i < res.data.list.length; i++){
- list.push(res.data.list[i]);
- }
- that.setData({
- list : list
- });
- page ++;
- that.setData({
- hidden:true
- });
- }
- });
- }
- 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);
- console.log("lower");
- },
- scroll:function(event){
- //该方法绑定了页面滚动时的事件,我这里记录了当前的position.y的值,为了请求数据之后把页面定位到这里来。
- this.setData({
- scrollTop : event.detail.scrollTop
- });
- },
- topLoad:function(event){
- // 该方法绑定了页面滑动到顶部的事件,然后做上拉刷新
- page = 0;
- this.setData({
- list : [],
- scrollTop : 0
- });
- loadMore(this);
- console.log("lower");
- }
- })
index.wxss
- /**index.wxss**/
- .userinfo {
- display: flex;
- flex-direction: column;
- align-items: center;
- }
- .userinfo-avatar {
- width: 128rpx;
- height: 128rpx;
- margin: 20rpx;
- border-radius: 50%;
- }
- .userinfo-nickname {
- color: #aaa;
- }
- .usermotto {
- margin-top: 200px;
- }
- /**/
- scroll-view {
- width: 100%;
- }
- .item {
- width: 90%;
- height: 300rpx;
- margin: 20rpx auto;
- background: brown;
- overflow: hidden;
- }
- .item .img {
- width: 430rpx;
- margin-right: 20rpx;
- float: left;
- }
- .title {
- font-size: 30rpx;
- display: block;
- margin: 30rpx auto;
- }
- .description {
- font-size: 26rpx;
- line-height: 15rpx;
- }
效果图
微信小程序之下拉加载和上拉刷新的更多相关文章
- 微信小程序下拉加载和上拉刷新两种实现方法
方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性 设置js里onPullDownRefresh和onR ...
- 微信小程序---》分包加载
[小程序]---分包加载 一.分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载 在构建小程序分包项目时,构建会输出一个或多个分包.每个使 ...
- 微信小程序-工具无法加载本地模拟开发服务的解决办法
微信小程序开发工具出现如下问题: 因为网络代理软件或者 VPN 影响,工具无法加载本地模拟开发服务 请尝试以下任一解决方案1.关闭相关网络代理软件,重新编译成功后,再启动相关网络代理软件: 2.配置 ...
- 微信小程序实现滚动加载更多
1.需要用到的组件和api scroll-view(可滚动视图区域) wx.showToast(OBJECT)显示消息提示窗----显示loading小菊花用的 2.需要用到的属性 3.scrol-v ...
- 微信小程序 - 图片懒加载
wxml <!-- 数据源 --> <view class='item-{{index}}' wx:for="{{lazyData}}" wx:key=" ...
- 微信小程序中的加载更多(即列表分页)
1.app.json中: "window": { "enablePullDownRefresh": true //是否开启当前页面下拉刷新 } 2.wxml中: ...
- 微信小程序上滑加载更多
onReachBottom: function () { var that = this var limit = that.data.limit var count = that.data.count ...
- 微信小程序上拉加载下拉刷新
微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载 ...
- 微信小程序之下拉刷新,上拉更多列表实现
代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...
随机推荐
- springmvc入门(1)
一..springmvc框架 1.什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.springmvc是一个基于mv ...
- 通过docker-compose构建ghost博客(一)
通过命令构建ghost博客 docker run -d --name ghost -p : -v $PWD/data:/var/lib/ghost ghost 当然也可以编写yml文件,通过docke ...
- php 图像处理函数
gd_info 函数:获取当前安装的GD库的信息 getimagesize 函数:获取图像的大小 image_type_to_extension 函数:获取图像类型的文件后缀 ima ...
- DirectX中坐标系问题
自己属于笨类型,以前总是记不住directx坐标系是怎样的,今天在网上看到一篇文章,借鉴过来. 1. 明确DirectX是左手坐标系. 描述如下:1. 伸出左手,手面朝上,手背朝下,握住z轴,大拇指方 ...
- 27.MySQL备份与恢复
27.备份与恢复27.1 备份/恢复策略考虑因素:备份表的存储引擎(事务性or非事务性):全备份or增量备份用复制做异地备份定期备份,考虑恢复时间确保mysql打开log-bin,有了BINLOG,M ...
- MySQL表的相关操作
操作数据表之前,必须先选择相应数据表所在的数据库 mysql> USE databaseName; -- 选择数据库 查看该数据库下的数据表 mysql> show tables; 确定数 ...
- Partition Array Into Three Parts With Equal Sum LT1013
Given an array A of integers, return true if and only if we can partition the array into three non-e ...
- Visual code 搭建Vue项目
使用VS Code搭建Vue项目 1.安装 VScode 2..安装最新node.JS 2.安装cnpm镜像 淘宝镜像(node自带安装了npm,故不再安装) npm install -g cnpm ...
- 要显示的联系人——>自定义-bug
自定义中将“电话”下的“所有联系人”不勾选,但是Contacts列表还是显示PHONE联系人. SELECT _id, display_name, agg_presence.mode AS conta ...
- NOIP2017提高组day2T1题解(奶酪)
题目链接:奶酪 这道题还是很水的,在下拿了满分. 并没有用什么高级的算法,我讲一下基本思路. 我们把每个洞都视为一个节点. 我们读入相关数据后,就先进行预处理,通过每个节点的信息和题目的规定,建立一张 ...