微信小程序 - (下拉)加载更多数据

注意和后端配合就行了,前端也只能把数据拼接起来!

无论是下拉加载还是加载更多,一样的道理!

注意首次加载传递参数

注意每次加载数据数

wxml

    <view class=‘table-rank‘>
      <view class=‘tables center‘ wx:for="{{ranklist}}" wx:for-index="idx" wx:key="prototype">
        <view class=‘stage-rank‘>
          {{idx+1}}
        </view>
        <view class=‘name‘>{{item.name}}</view>
        <view class=‘price‘>{{item.count}}</view>
      </view>
    </view>

    <view class=‘more‘>
      <button loading="{{loading}}" disabled="{{disabled}}" catchtap="setLoading">{{loadText}}</button>
    </view>

js

var app = getApp().globalData;

Page({
  data: {
    loadText: ‘加载更多‘,
    ranklist: [],
    count: 1
  },

  onLoad: function(res) {
    // 首次加载:传参数num:0
    let num = 0;
    let _page = this;
    let uid = wx.getStorageSync(‘uinfo‘).uid;

    wx.request({
      url: ‘url‘,
      data: {
        uid,
        num
      },
      header: {
        ‘content-type‘: ‘application/json‘
      },
      method: ‘GET‘,
      dataType: ‘json‘,
      responseType: ‘text‘,
      success(res) {
        _page.setData({
          ranklist: res.data.all_list,
          me: res.data.me
        });
      }
    })
  },

  //点击 加载更多 按钮
  setLoading(e) {

    let _this = this;
    let _page = this;

    // 暂存数据
    let ranklistBefore = _this.data.ranklist;

    let uid = wx.getStorageSync(‘uinfo‘).uid;

    // 每次加载数据条数(10)
    let num = _this.data.count++ * 10;

    wx.request({
      url: app.api.simulation_ranking,
      data: {
        uid,
        num
      },
      header: {
        ‘content-type‘: ‘application/json‘
      },
      method: ‘GET‘,
      dataType: ‘json‘,
      responseType: ‘text‘,
      success(res) {
        // 每次加载数据,请求一次就发送10条数据过来
        let eachData = res.data.all_list;

        if (eachData.length == 0) {
          wx.showToast({
            title: ‘没有更多数据了!~‘,
            icon: ‘none‘
          })
        } else {
          wx.showToast({
            title: ‘数据加载中...‘,
            icon: ‘none‘
          })
        }

        _page.setData({
          loadText: "数据请求中",
          loading: true,
          ranklist: ranklistBefore.concat(eachData),
          loadText: "加载更多",
          loading: false,
        });
      }
    })
  }
});

  

原文地址:https://www.cnblogs.com/cisum/p/10178893.html

时间: 2024-10-10 00:38:36

微信小程序 - (下拉)加载更多数据的相关文章

微信小程序上拉加载更多

一般上拉加载更多用于数据太多,一次加载完成数据卡顿,差不多就是一个分页的功能, 写法很简单,首页data数据中先定义一个page为1,第一次进入页面调用接口将为1的page传给后台,随后在小程序自带的onReachBottom函数中操作 onReachBottom: function () { var that = this; console.log(that) var page = that.data.page page++; that.setData({ page: page }) // 显

微信小程序之上拉加载更多

loadmore 加载更多(分页加载) 当用户打开一个页面时,假设后台数据量庞大时,一次性地返回所有数据给客户端,页面的打开速度就会有所下降,而且用户只看上面的内容而不需要看后面的内容时,也浪费用户流量,基于优化的角度来考虑,后台不要一次性返回所有数据,当用户有需要再往下翻的时候,再加载更加数据出来. 业务需求: 列表滚动到底部时,继续往上拉,加载更多内容 必备参数: (1)pageindex: 1 //第几次加载 (2)callbackcount: 15 //需要返回数据的个数 其他参数: 根

微信小程序之下拉加载和上拉刷新

微信小程序下拉刷新上拉加载的两种实现方法 方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性             属性   类型                           描述 enablePullDownRefresh Boolean 是否开启下拉刷新,详见页面相关事件处理函数. 设置js里onPullDownRefresh和onReachBottom方法 属性    类型 描述 on

ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前,先把实现的基本原理说一下.当夜幕下拉到底部的时候,js可以判断滚动条的位置,到达底部触发js方法,执行jquery的ajax方法,向后台一般处理程序夜幕ashx文件请求数据源,得到json格式的数据源.然后,遍历json数据源,拼接一个li标签,再填充到页面上去. 首先,我们来做个简单的html页面

微信小程序上拉加载:onReachBottom详解+设置触发距离

前端经常遇到上拉加载更多的需求,一般还涉及到翻页.小程序里已经给了下拉到底的触发方法onReachBottom(),这里记录下怎样使用这个方法实现下拉加载更多,有需要的直接看代码,有详细注释: 1.首先在data里定义一下返回数据data,和翻页的页数pagenum data: { datalist: [], //.wxml文件需要绑定的列表,我这里用的数据类型是数组 pagenum: 1, //初始页默认值为1 }, 2.具体的请求过程,包含新老数据的数组合并,实现数据实时更新 getdata

平滑的下拉加载更多数据

平滑的下拉加载更多地数据,例如下拉加载更多聊天记录,只要重写UITableView的setContentSize方法就可以实现. - (void)setContentSize:(CGSize)contentSize { if (!CGSizeEqualToSize(self.contentSize, CGSizeZero)) { if (contentSize.height > self.contentSize.height) { CGPoint offset = self.contentOff

微信小程序上拉加载和下拉刷新(wepy)

这篇随笔主要是记录在用wepy写小程序下拉刷新和上拉加载功能时遇到的数据显示不完全的问题及解决方法. 网上很多关于小程序的上拉加载和下拉刷新的文章的实现方法,无非两种,一是用scroll-view组件,另一种则是使用onReachBottom()和onPullDownRefresh()两个页面事件处理函数. scroll-view实现不好的是不能使用onPullDownRefresh,只能检测滚动到顶部触发刷新或者其它动画操作,以及在其内部使用textarea.map.canvas.video等

微信小程序~上拉加载onReachBottom

代码: //页面上拉触底事件的处理函数 onReachBottom(e) { console.log("底部")// 滚动到页面执行 该 方法 wx.showToast({ title: '加载中...', icon: 'loading', duration: 2000 }) /* 这里执行你需要的请求数据追加到循环数组就好了 */ }, onPageScroll(e) { console.log(e) //滚动条 滚动的位置(e.scrollTop)从头部开始计算 }, 原理: 上拉

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

微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载的动画可能会是白色背景,会看不清. { "usingComponents": { "annicate": "/components/annicate/index" }, "navigationBarTitleText": &quo

微信小程序实现滚动加载更多

1.需要用到的组件和api scroll-view(可滚动视图区域) wx.showToast(OBJECT)显示消息提示窗----显示loading小菊花用的 2.需要用到的属性 3.scrol-view需要指定一个高度,这个高度可以按自己的需求计算,我使用的是屏幕可用高度并且默认一页显示6个 4.滚动到底部绑定需要触发的事件 <scroll-view scroll-y='true' style="height:{{height}}px" bindscrolltolower='