微信小程序,使用scroll-view实现下拉加载更多(下一页)源码

微信小程序下拉刷新 3 种实现方案对比:原生 vs scroll-view vs 第三方组件 本文深入对比微信小程序下拉刷新的三种实现方案:原生`onPullDownRefresh`、`scroll-view`自定义和第三方组件库。分析各方案在开发效率、UI自由度、性能表现和维护成本上的优劣,提供场景化选型建议,帮助开发者根据业务需求选择最佳方案,提升用户体验。 阅读详情

maker一下使用scroll-view实现下拉加载更多(下一页),比较粗糙,如下图。
由于数据是死数据,只能加载一次(如图)。

源码下载:http://download.youkuaiyun.com/download/dknightl/9922174

这里写图片描述

下拉逻辑由scroll-view里的bindscrolltolower参数实现。
判断是否可以下拉由当前页数和总页数比较判断

  • wxml
<!--index.wxml-->
<view class="borderTop1px"></view>
<block wx:if="{{resultShow}}">
  <view class="content_zero" animation="{{animationData}}" wx:if="{{orderList.length==0}}" >
    <image mode="aspectFit" src="../../../../image/search_zero.png"></image> 
    <view class="tip color_888888">没有该{{orderCon==0?'商品':'用户'}}的订单记录</view>
  </view>


  <scroll-view scroll-y scroll-top="{{scrollTop}}" style="height: {{windowHeight}}px;" 
      bindscrolltolower="loadMore" bindscroll="scroll">

  <block wx:for="{{orderList}}">

    <view animation="{{animationData}}" class="order_msg bg_fff" >

      <view class="item_status display-flex-row">
        <view class="">
          <image src="../../image/oreder-desc.png"></image>
        </view>
        <view wx:if="{{item.state==1}}" class="status_content color_ff6700">待付款</view>  
        <view wx:elif="{{item.state==2}}" class="status_content color_ff6700">待发货</view>    
        <view wx:elif="{{item.state==3}}" class="status_content color_ff6700">待收货</view>    
        <view wx:elif="{{item.state==4}}" class="status_content color_ff6700">已完成</view>    
        <view wx:else="{{item.state==5}}" class="status_content color_ff6700">异常</view>      
      </view>

      <view class="item_wrap display-flex-row" wx:for="{{item.goods}}">
        <image src="{{item.good.good_display_img}}" mode="aspectFit" class="item_item_image"></image>
        <view class="item_msg" >

          <view class="item_item_title" >
              <view class="text-hide">{{item.good.good_name}}</view>
          </view>
          <view class="item_item_bot">              
            <view class="color_888888 text-hide" >
              花型:<block wx:for="{{item.flowers}}" >
                <text> {{item.flower_name}}</text>
              </block>                 
            </view>
            <view class="display-flex-row" style="justify-content: space-between;">
              <view class="item_item_price">¥{{item.good.good_price}}</view>
              <view>x{{item.number}}</view>
            </view>

          </view>

        </view>
      </view>

      <view class="item_count display-flex-row">
        <view class="count_content">合计:<span class="count_price">¥{{item.totalprice}}</span></view>    
      </view>
    </view>


  </block>
  </scroll-view>

    <view class="loading_area display-flex-row" wx:if="{{showLoadding}}">  
      <icon type="waiting" size="20"  color="#ff6700"/>
      <view>加载中...</view> 
    </view>


</block>
  • js
//index.js
var app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    chooseGoods: {},
    startDate: "",
    endDate: "",
    orderList: [],//订单列表

    //假数据
    dataList:

    { "count": 2,//总页数 
      "list": [
        { "goods": [{ "number": 1, "flowers": [{ "flower_name": "花花" }],
          "order_good_id": "0e96b13e39ea49bcbce6c5ccee32ab4e", 
          "good_id": "1585b32f67e04106b4c685dcec1aa556", 
          "order_id": "5892d23092ec48b5976e80c71031f788", 
          "good": {  
            "good_display_img": "../../image/zhutu.jpg",  
            "good_name": "小明", 
            "good_price": 10, 
            } 
          }], 
          "order_id": "5892d23092ec48b5976e80c71031f788",
          "totalprice": 120.00  
        }, 
        { "goods": [
            { "number": 1, "flowers": [{ "flower_name": "蓝" }], 
              "order_good_id": "0caf434a5d1147838263c0fbcefcc2ef", 
              "good_id": "b7b698cd4bde4e20915177de4367e75e", 
              "order_id": "f3e4652572cb4ac59e29e53e3bbfb33f", 
              "good": 
                {
                  "good_display_img": "../../image/zhutu.jpg", 
                  "good_price": 10, 
                  "good_name": "小炮", 
                } 
              }, 
            { "number": 1, "flowers": [{ "flower_name": "ee" }], 
              "order_good_id": "753313f00c6247a2982b654b3de97bd0", 
              "good_id": "1585b32f67e04106b4c685dcec1aa556", 
              "order_id": "f3e4652572cb4ac59e29e53e3bbfb33f", 
              "good": 
                { 
                   "good_display_img": "../../image/zhutu.jpg",  
                   "good_name": "小明", 
                   "good_price": 20, 
                } 
            }, 
            { "number": 1, "flowers": [{ "flower_name": "绿" }], 
              "order_good_id": "797ecaf6ec0241a1bce5b21443faff21", 
              "good_id": "c32d93ea90f34ad2b458d3e5f2a9152f", 
              "order_id": "f3e4652572cb4ac59e29e53e3bbfb33f", 
              "good": 
                { 

                  "good_display_img": "../../image/zhutu.jpg", 
                  "good_name": "德莱文", 
                  "good_price": 20, 

                } 
            }], 
            "order_id": "f3e4652572cb4ac59e29e53e3bbfb33f",
            "totalprice": 120.00  
          }, 
          { "goods": [
            { "number": 3, "flowers": [{ "flower_name": "绿" }], 
              "order_good_id": "358f6615483a440fa4c00001664aac1c", 
              "good_id": "c32d93ea90f34ad2b458d3e5f2a9152f", 
              "order_id": "01448473609247f894e2de4215124262", 
              "good": 
                {  
                  "good_display_img": "../../image/zhutu.jpg", 
                  "good_price": 20, 
                  "good_name": "德莱文", 
                } 
            }, 
            { "number": 1, "flowers": [{ "flower_name": "花花" }], 
              "order_good_id": 
              "adf0d5d5c7bd480e9b26f21e7e869a45", 
              "good_id": "1585b32f67e04106b4c685dcec1aa556", 
              "order_id": "01448473609247f894e2de4215124262", 
              "good": 
                {  
                  "good_display_img": "../../image/zhutu.jpg", 
                  "good_price": 20, 
                  "good_name": "小明", 
                } 
            }],
              "order_id": "01448473609247f894e2de4215124262" ,
              "totalprice": 120.00  
            }
        ] 
    },

    resultShow: false,//显示列表
    orderCon: 0,//0表示商品 1表示用户
    conId: '',//传过来的id

    windowHeight: '',//屏幕高度 

    scrollPd: false,//是否可滑动
    scrollTop: 0,//设置srcoll-view距离顶部位置
    top: 0,//当前滑块位置
    page: 1,//当前页数
    row: 3,//一页数量

    showLoadding: false,//显示加载
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;

    //获得屏幕高度
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          windowHeight: res.windowHeight
        })
      },
    })

    //动画
    var animation = wx.createAnimation({
      duration: 1000,
      timingFunction: "ease",
      delay: 0
    })
    animation.translateY(5).step();
    this.setData({
      animationData: animation.export()
    })


    wx.setNavigationBarTitle({
      title: '商品订单记录'
    })

    //行数 死数据、只有3行
    var row=that.data.row;

    //获得数据 默认第一页
    that.queryOrdersByGood(1, row)


  },


  /**
 * 操作数据
 * 
 * 由于是死数据,page只为判断是否还有下一页
   */
  queryOrdersByGood: function (page, row) {
    var that = this;

    var dataList = that.data.dataList;//假数据
    var count = dataList.count;//总页数
    var myList = dataList.list;//列

    that.setData({
      orderList: myList.concat(that.data.orderList),//拼接列表
      resultShow: true,//显示数据
      showLoadding: false,//去除加载提示
      page: page,//存储当前页数,为是否有下一页做判断

    })

    //判断是否还有数据   当前页小于总页数则可以下拉加载数据       
    if (parseInt(count) > parseInt(that.data.page)) {
      that.setData({
        scrollPd: true,//显示滑块、允许下拉
      })
    }
  },

  /**
 * 加载更多 下一页 
 * */
  loadMore: function () {
    var that = this;
    var thatData = this.data;
    var pd = thatData.scrollPd;//是否加载数据,true则加载

    //显示加载
    wx.showToast({
      title: '加载中...',
      duration:100,
      icon: 'loading',
    })

    if (pd) {
      //防止多次触发滑动到底部事件
      that.setData({
        scrollPd: false//禁止下拉
      })

      var page = thatData.page;//当前页数
      var row = thatData.row;//数量
      var pageAdd = parseInt(page) + 1;//下一页

      that.setData({
        showLoadding: true,//显示加载 
      })

      that.queryOrdersByGood(pageAdd, row);

    }


  },
  /**
 * 滑动事件
 * */
  scroll: function (e) {
    var that = this;
    that.setData({
      top: e.detail.scrollTop
    })
  },
})
  • wxss
/**index.wxss**/
/* orderBroList.wxss */

.display-flex-row{
  display: flex;
  flex-direction: row;
}
.borderTop1px{
  border-top: 1px solid #e5e5e5;
}
.bg_fff{
  background-color:#FFF;
}
.order_msg{
  /* margin-top:20rpx; */
  padding:5px 20rpx;
  margin-bottom:10rpx;
}

.select_hidden{
  height: 35px;
}

.order_msg .item_status{
   justify-content: space-between;
  font-size:12pt;
  border-bottom: 1px solid #E5E5E5;
  padding: 10rpx 0 5rpx 0;
}

.order_msg .item_status image{

  width: 18pt;
  height: 18pt;
}

.order_msg .item_wrap {
    justify-content: center;
    align-items: center;
    padding:10rpx 0;
    background-color: #FFF;
    border-bottom: 1px solid #E5E5E5;
    width:710rpx;
}
.order_msg .item_msg{
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  width: 550rpx;
  margin-left:20rpx;
  font-size:11pt;
  height: 80px;
}
.order_msg .item_item_image {
    width: 150rpx;
   height: 80px;
}
.order_msg .item_item_title {
    padding: 0 10px 0  0;
}

.item_count {
  font-size:12pt;
  padding-top:10rpx;
  justify-content: flex-end;
}
.item_count .count_price{
  font-size:14pt;
}

.content_zero{
  margin-top:20%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.content_zero .tip{
  font-size: 10pt;
}
.content_zero image{
  height: 100PX;
}

.loading_area{
  font-size:10pt;
  align-items: center;
  justify-content: center;
  margin:20rpx 0;
}
微信小程序 - 最新详细实现列表上拉懒加载及“到底了“功能示例,数据列表下拉滑动页面触底后请求接口懒加载数据,自动计算分页/总条数、判断分页懒加载是否继续请求接口数据,以及数据没有了底部提示用户没有了 微信小程序,vue2,vue3,列表,懒加载,触底加载,上拉页面触发加载,列表懒加载如何判断是否还需要继续请求接口,如何知道数据加载已经没有了停止继续请求,分页判断,列表滚动触底更新实现,页面滚动到底部后请求数据填充到data中,小程序上拉加载和下拉刷新,如何分页加载数据,实现上拉加载功能示例加载更多数据/触底加载/点击加载更多数据,数据分页请求,onReachBottom(),不生效,不触发的情况,列表下拉加载判断是否到底了,我是有底线的,到底啦,自动计算,用户滑动屏幕加载数据功能,滚动条触底,如何通过小 阅读详情

相关推荐

微信小程序 - 页面触底 onReachBottom() 懒加载自动计算分页、检查是否已经请求完全部数据、自动请求接口合并数据(高效自动判断分页懒加载是否继续请求接口数据,超详细触底请求后端示例教程)

微信小程序,vue2,vue3,列表,懒加载,触底加载,上拉页面触发加载,列表懒加载如何判断是否还需要继续请求接口,如何知道数据加载已经没有了停止继续请求,分页判断,列表滚动触底更新实现,页面滚动到底部后请求数据填充到data中,小程序上拉加载和下拉刷新,如何分页加载数据,实现上拉加载功能示例加载更多数据/触底加载/点击加载更多数据,数据分页请求,onReachBottom(),不生效,不触发的情况,列表下拉加载判断是否到底了,我是有底线的,到底啦,自动计算,用户滑动屏幕加载数据功能,滚动条触底,如何通过小

🏆 前端领域优质创作者 3229

uniapp scroll-view滑到底部加载更多数据

进入页面加载完请求第一页数据(onLoad)或者切入前台请求(onShow),根据需求修改,我这里是onLoad。必须设置下面两个属性。

Mybabyying的博客 4852

微信小程序开发纸质翻页效果源码-小程序翻页效果 uniapp实现

微信小程序开发纸质翻页效果源码_小程序翻页效果 uniapp实现

uniapp二次开发uni-scroll-view下拉刷新和上拉加载更多的功能

在pages目录下选择你需要添加下拉刷新功能的页面,打开该页面的vue文件。这样,我们就完成了上拉加载更多功能的实现。这样,我们就完成了下拉刷新功能的实现。4、上拉加载更多功能的实现。1、下拉刷新功能的实现。

csdndddsd的博客 1136

NCBI|叶绿体基因组数据上传

叶绿体基因组NCBI上传 小编最近在NCBI上传了好几次数据…想着可以把具体的上传步骤写下来,供大家参考。以下是叶绿体基因组的上传示例,大家可以瞅瞅 图片 准备工作 1.登录NCBI官网:https://www.ncbi.nlm.nih.gov/, 依次点击“sign in to NCBI”——“See more 3rd party sign in options”——搜索“Microsoft live.com”。 ”sign in to NCBI“ ”See more 3rd party sign i

weifanbio的博客 3901

无GPS室内飞行:基于PX4与MID360的FAST-LIO定点悬停实战解析

本文详细解析了基于PX4飞控与大疆MID360激光雷达的无GPS室内飞行技术,重点介绍了FAST-LIO算法在定点悬停中的应用。通过硬件配置、软件环境搭建、坐标系转换等实战经验,帮助开发者解决室内定位难题,实现精准悬停与稳定飞行。

weixin_29056781的博客 262

微信小程序开发(十四)scroll-view实现下拉刷新上拉加载更多

之前在做原生app开发的时候,下拉刷新和上拉加载更多是使用的比较多的一个功能了。现在在做微信小程序开发,小程序只提供了下拉刷新的接口。那么下拉刷新和上拉加载更多就需要我们换个思路实现了。关于scroll-view什么是scroll-viewscroll-view:可滚动视图区域。scroll-view的属性注意点使用竖向滚动时,需要给一个固定高度,通过 WXSS 设置 height。Bug & Ti

小猿猪哥的博客 8万+

DBSCAN聚类算法——机器学习(理论+图解+python代码)

一、前言 二、DBSCAN聚类算法 三、参数选择 四、DBSCAN算法迭代可视化展示 五、常用的评估方法:轮廓系数 六、用Python实现DBSCAN聚类算法 一、前言 去年学聚类算法的R语言的时候,有层次聚类、系统聚类、K-means聚类、K中心聚类,最后呢,被DBSCAN聚类算法迷上了,为什么呢,首先它可以发现任何形状的簇,其次我认为它的理论也是比较简单易懂的。今年在python...

huacha__的博客 20万+

scroll-view 标签 :uniapp 实现 滚动加载更多、下拉刷新

【代码】scroll-view 标签 :uniapp 实现 滚动加载更多、下拉刷新。

m0_47727127的博客 1479

ANSYS Twin Builder实战:5步搞定数字孪生模型部署(附ROM配置技巧)

本文详细解析了ANSYS Twin Builder在数字孪生模型部署中的实战应用,重点介绍了ROM(降阶模型)配置技巧。通过5个关键步骤,从环境搭建到工业部署,帮助工程师高效实现高精度三维仿真到轻量化数字孪生的转化,提升预测性维护和系统仿真效率。

weixin_27330481的博客 661

搭建AutoSAR开发环境

任何开发都需要一套开发环境,包括软硬件环境,笔者后续将介绍的是 NXP 的 S32K144 配套的开发板。接下来详细介绍怎么获取这些软硬件工具。仅供个人学习使用!

cfl927096306的博客 6111

scroll-view组件实现下拉刷新, 拉到底加载更多

官方文档已声明,即使在page.json和app.json中开启下拉刷新,scroll-view组件也是不支持的。但我们可以通过曲线救国的方法来实现 实现代码 // wxml &lt;scroll-view style='height: 300px;' scroll-y="{{true}}" scroll-top="{{scrollTop}}" bi...

ishowman的博客 1万+

Unity之OpenXR+XR Interaction Toolkit实现 VR控制第一人称角色模型动画

我们在开发VR项目时,有时会有第一人称视角的需求,即我们自己带上VR头显,能够看到自己的身体,如果模拟一些人物触电死亡,使用工具动画之类的需求,那么VR控制第一人称视角就比较实用了。我们今天就来介绍一下如何实现VR设备控制第一人称:1.角色手部跟随手柄移动和旋转2.角色头部跟随VR头显转动和移动3.角色腿部跟随角色头显移动和下蹲。

TxNet 2844

wechat-miniprogram-examples之滚动加载:scroll-view实现上拉加载更多与下拉刷新的5个技巧

在微信小程序开发中,**scroll-view 上拉加载更多与下拉刷新**几乎是每个列表页的标配功能。很多新手在实现时总会遇到"滚动不触发""重复请求""刷新失效"等经典问题。而开源项目 **wechat-miniprogram-examples(微信小程序示例)** 中的豆瓣图书、知乎日报两个案例,恰好给出了两套风格迥异但都非常经典的滚动加载实现方案,非常适合新手对照学习。本文基于该项目源码,为

gitblog_00066的博客 712

Day 01: 与Python的第一次亲密接触

环境搭建 、第一个程序 Hello, World!、以及Python之禅 (The Zen of Python) 的解读。

杨小扩的博客 220

YOLOv13改进:卷积魔改 | 动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点

如何跟YOLOv13结合:替代YOLOv13的DS-C3K2

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 364

微信小程序开发之 下拉刷新,上拉加载更多

本文记载了如何在微信小程序里面实现下拉刷新,上拉加载更多 先开看一下界面    大致如此的界面吧。 这个Demo使用了微信的几个Api和事件,我先列出来。 1.wx.request (获取远程服务器的数据,可以理解成$.ajax) 2. scroll-view的两个事件    2.1 bindscrolltolower(滑到页面底部时)    2.

大灰狼的小绵羊哥哥的博客 5953

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

uni-app x scroll-view 组件完全指南:滚动容器、下拉刷新与嵌套滚动全解析

> **导读**:`scroll-view` 是 uni-app x 中最核心的可滚动视图容器组件(组件类型 `UniScrollViewElement`),支撑列表滚动、区域滚动、下拉刷新、嵌套滚动等高频场景。本文以官方文档为主体,结合仓库源码(`src/pages/component/scroll-view/` 下的完整示例与自动化测试),从属性、事件、overscroll 平台差异、自定义下

gitblog_00428的博客 361

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

探索WeApp-Scroll-View-Refresh:一个高效、灵活的小程序滚动刷新解决方案

探索WeApp-Scroll-View-Refresh:一个高效、灵活的小程序滚动刷新解决方案 项目简介 是一个专门为微信小程序设计的滚动视图组件,旨在实现平滑的上拉加载和下拉刷新功能。该项目由开发者 Chaunjie 创建并维护,提供了高度定制化的选项,以满足不同应用场景的需求。 技术分析 核心特性 高性能:WeApp-Scroll-View-Refresh 利用了微信小程序的原生 scrol...

gitblog_00047的博客 497

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用es6的语法微信小程序上拉加载

用了一些es6的语法写一个微信小程序上拉加载的Demo 源码如下 1.wxml部分 <scroll-view id="scroll-view" scroll-y="true" bindscrolltoupper="bindscrolltoupper" bindscroll="bindscroll" bindscrolltolower="bindscrolltolower"> <view class="artlist" hover-class="none" hover-stop-

weixin_45356397的博客 237

uni-app x list-view 长列表组件全指南:复用回收机制、下拉刷新与性能优化

list-view 是 uni-app x 中用于长列表场景的核心滚动组件,它基于原生"复用回收"的 list 机制,确保列表加载数千条数据时渲染资源不会无限增长。本文以 [list-view 官方文档](https://link.gitcode.com/i/2d1bad8aa436af577f48a4eab50810b6) 为主线,结合 uni-app x 开源仓库中的组件源码([uni-lis

gitblog_00232的博客 498

微信小程序---仿今日头条

源码详见: git源码效果图: 效果图weixinddemo本demo主要调用了https://api.tianapi.com/social/的api接口,需要申请apikey,将其定义在app.js中,请求中的url格式为https://api.tianapi.com/social/?key=yourKey&num=10&currentPage=X //api读取数据数据loadDat

linfujian1999的博客 8747

微信小程序源码模仿artand下载

微信小程序源码

无极低码 2565

uniapp小程序的getsysteminfo_微信小程序 scroll-view 的那些坑

记得最开始做小程序的时候,遇到的第一个坑便是 <scroll-view></scroll-view> 和小程序页面级别的下拉刷新冲突的问题。即:<scroll-view></scroll-view>标签与onPullDownRefresh事件无法同时使用。当时想做成的效果就是一个可以作用拖动的长列表,同时具有下拉刷新效果,大概是这样:PS:用的安卓模...

weixin_39746382的博客 699
上一篇: 微信小程序页面使内容充满整个屏幕(高度、宽度100%),并使内容水平和竖直都居中
下一篇: 微信小程序商品详情页交互源码(选择商品类型切换、预览商品图片)
Qssn丶
博客等级 码龄11年 88粉丝 113原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值