微信小程序,使用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

InsightFace实战:如何在树莓派上部署轻量级人脸识别系统(附完整代码)

本文详细介绍了如何在树莓派上部署基于InsightFace框架的轻量级人脸识别系统。通过硬件选型、环境配置、模型优化(如MobileFaceNet)及完整代码实战,指导开发者构建本地化、低功耗的智能应用,如智能门铃,并提供了性能调优与系统服务化的进阶技巧。

weixin_29043895的博客 351

从零开始:用Kimi API和LangChain打造智能写作助手

本文详细介绍了如何从零开始,利用Kimi API提供的强大AI大模型能力,结合LangChain框架构建一个智能写作助手。通过实战演示了环境搭建、核心写作链构建、以及引入检索增强生成和智能体等进阶功能,旨在解决长文档创作、事实准确性等痛点,打造一个能理解意图、调用工具并保持记忆的智能创作伙伴。

weixin_29294395的博客 139

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

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

小猿猪哥的博客 8万+

Etcd教程 — 第三章 Etcd集群动态发现、DNS发现

Etcd教程 — 第三章 Etcd集群动态发现、DNS发现

Mr_XiMu的博客 2819

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

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

m0_47727127的博客 1479

关于StartAI本地部署相关问题解答

很多小伙伴们都有接入自己本地SD的需求,对此小编整理了一些相关问题~

HDJ9387的博客 940

of_graph_get_remote_port

isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ...

wmzjzwlzs的专栏 1165

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

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

ishowman的博客 1万+

交换机背板带宽、交换容量与包转发率到底是啥?

在网络工程中,交换机是核心设备之一,而关于它的性能指标,背板带宽、交换容量、以及包转发率往往成为人们衡量其性能的重要参数。这些术语的定义、关系、以及在实际场景中的应用,都对交换机的选型与部署有着重要意义。本文将为您全面解读这些概念,帮助您深入了解交换机的核心性能指标。

网络技术联盟站 1549

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

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

gitblog_00066的博客 712

手把手教你五种方案配置Obsidian免费同步,全平台通用(支持Alist/OpenList)

Obsidian是一款优秀的Markdown笔记工具,但官方同步服务每年近700元让人望而却步💸 本文整理了5种免费同步方案,涵盖苹果生态专属方案、多网盘插件同步、版本管理同步、点对点同步、自建实时同步等不同场景📱💻 每种方案都附有详细配置步骤,助你找到最适合的同步方式✨

XiaoqiangClub的博客 1832

SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行

本文是ABAP开发入门指南,详细介绍如何创建并运行第一个"Hello World"程序。主要内容包括:通过SE38事务码进入ABAP编辑器;创建以Z/Y开头的程序并保存为本地对象;编写简单的WRITE输出语句;完成语法检查、激活和执行流程;以及初步体验调试功能。文章特别强调ABAP开发的规范要求,如程序命名规则、激活与保存的区别等,并提供了详细的步骤说明和常见问题提示,帮助零基础开发者快速上手ABAP编程。

baidu_35680696的博客 479

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

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

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

gitblog_00428的博客 361

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

gitblog_00047的博客 497

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用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、付费专栏及课程。

余额充值