小程序列表分页 下拉刷新 上拉加载更多

小程序列表分页 下拉刷新 上拉加载更多

假设请求参数request/url?offset=0&limit=10   从0开始,每页10条。offset由前端计算得来
假设后台返回参数:
	{
		code: 1
		data: {
			// row存放返回的数据列表,最多{ limit }条
			rows: [,…]
			// 一共多少条数据
			total: 120
		}
		msg: "获取成功"
		time: "1583892884"
	}
  • js文件
var call = require("../../utils/wxrequest.js");
//获取应用实例
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    imghost: 'https://imghost.example.com/'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //每页10条,当前第一条
    this.setData({
      limit: 10,
      now_page: 1,
      total_num: 0,
      //wxml页面要循环的列表
      visitorsIndex: []
    })
    this.RequestVisitors();
  },
  RequestVisitors: function ($now_page = 1) {
    var admin = wx.getStorageSync('admininfo');
    //call 方法是封装的wx请求方法,参数分别是:url、post参数、请求返回的结果集处理函数
    call.post(
      'visitors/index?offset=' + ($now_page - 1) * this.data.limit + '&limit=' + this.data.limit, 
      {},
      this.doVisitorIndex
    )
  },
  doVisitorIndex(res) {
    if (res.code == 1 && res.data.total > 0) {
      this.setData({
        visitorsIndex: this.data.visitorsIndex.concat(res.data.rows),
        total_num: res.data.total,
        now_page: this.data.now_page + 1
      })
    }
  },
  //下拉刷新
  onPullDownRefresh: function () {
    wx.showNavigationBarLoading() //在标题栏中显示加载
    //重新onLoad
    this.onLoad();
    //模拟加载
    setTimeout(function () {
      // complete
      wx.hideNavigationBarLoading() //完成停止加载
      wx.stopPullDownRefresh() //停止下拉刷新
    });
  },
  //上拉加载更多
  onReachBottom: function () {
    var that = this;
    //计算共多少页
    var $max_page = Math.ceil(that.data.total_num / that.data.limit);
    var $now_page = that.data.now_page;
    // 显示加载图标
    wx.showLoading({
      title: '玩命加载中',
    })
    console.log($now_page,$max_page);
    if ($now_page <= $max_page) {
      that.RequestVisitors($now_page);
    } else {
      wx.showToast({
        title: '没有更多了',
        duration: 2000
      })
    }
    // 隐藏加载框
    wx.hideLoading();
  }
})
  • 前端循环
<view class="forList bg-white"  wx:for="{{visitorsIndex}}" wx:key wx:for-index="index" wx:for-item="item">
    <view class="list  margin-top-sm" data-id="{{item.id}}" bindtap="goDetail" style="border-bottom:1px solid rgb(243,243,243);padding-bottom:10px;">
        <image wx:if="{{item.avatar_image}}" style="width:60px;height:60px;border-radius:60px;" src="{{imghost}}{{item.avatar_image}}"></image>
    </view>
</view

END

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值