uniapp的上拉加载H5和小程序

小程序


配置

{"path": "list/course-list","style": {"navigationBarTitleText": "课程列表","enablePullDownRefresh": true,"onReachBottomDistance": 150}}

上拉拉触底钩子

onReachBottom() {var that = this;if (that.groupPage * that.showNo - that.groupTotal < 0) {setTimeout(function () {that.groupPage += 1;that.getCommodityList();//请求下页数据}, 200);} else {this.isfinish = true;console.log("数据已经加载完成")}},

data值

data() {return {imgBaseWebUrl: this.$imgBaseWebUrl,serverFileUrl: app.globalData.ossFileServer,loading: '加载中',shopList: [],flowList: [],leftList: [],dictClassifyId: "",searchText: '',//搜索关键字groupPage: 1, //列表部分当前页码groupTotal: 0, //列表部分总页码showNo: 10,//每页显示条数isfinish: false,//列表数据是否加载完成reqIng: true,//数据请求中};

getCommodityList请求数据:

//获取所有商品getCommodityList: function () {let that = this;let url = "/classSchedule/page";that.reqIng = true;that.isfinish = false;let params;if(this.searchText){params={page: that.groupPage,title:this.searchText}}else{params={page: that.groupPage}}// console.log("当前请求页码", that.groupPage)this.$http.post(url, params).then((res) => {uni.hideLoading();console.log('后端', res);if (res.code == 200) {that.flowList=res.rows;console.log('取到的数据', that.flowList)if (that.showNo >= res.total) {//只有一页数据that.isfinish = true;}} else {uni.showToast({title: res.message,icon: "none",});}that.reqIng = false;}).catch((i) => {}).finally(() => {uni.hideLoading();});},


H5


view

<template><view class="container"><!-- 可滚动视图 --><scroll-viewscroll-y:style="{ height: windowHeight + 'px' }"@scrolltolower="loadMore"><!-- 数据列表 --><view v-for="(item, index) in listData" :key="index" class="item">{{ item }}</view><!-- 加载状态提示 --><view v-if="isLoadingMore" class="loading">加载中...</view><view v-if="hasMore === false" class="no-more">没有更多了</view></scroll-view></view>
</template>

js

export default {data() {return {listData: [],           // 存储列表数据page: 1,                // 当前页码isLoadingMore: false,   // 是否正在加载中hasMore: true,          // 是否还有更多数据windowHeight: uni.getSystemInfoSync().windowHeight // 屏幕高度}},created() {this.getListData() // 初始化加载第一页数据},methods: {// &#128293; 核心:加载更多数据async loadMore() {if (!this.hasMore || this.isLoadingMore) return // 防抖:避免重复请求this.isLoadingMore = truetry {const newData = await this.fetchData({ page: this.page + 1 })if (newData.length > 0) {this.listData = [...this.listData, ...newData]this.page++} else {this.hasMore = false // 无更多数据}} catch (error) {console.error('加载失败:', error)uni.showToast({ title: '加载失败', icon: 'none' })} finally {this.isLoadingMore = false}},// 模拟API请求(实际替换为你的接口)fetchData({ page }) {return new Promise(resolve => {setTimeout(() => {// 模拟分页数据(每页5条)const startIndex = (page - 1) * 5 + 1const endIndex = page * 5const mockData = Array(5).fill().map((_, i) => `第${page}页-条目${startIndex + i}`)resolve(mockData)}, 800) // 模拟网络延迟})},// 可选:下拉刷新重置数据onPullDownRefresh() {this.page = 1this.listData = []this.hasMore = truethis.getListData()uni.stopPullDownRefresh() // 停止刷新动画},getListData() {this.fetchData({ page: this.page }).then(data => {this.listData = datathis.page++})}}
}

css

.container {width: 100%;height: 100vh;
}
.item {padding: 20rpx;border-bottom: 1px solid #f0f0f0;text-align: center;
}
.loading {text-align: center;padding: 20rpx;color: #999;
}
.no-more {text-align: center;padding: 20rpx;color: #ccc;font-size: 28rpx;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98020.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【和春笋一起学C++】(四十)抽象数据类型

抽象数据类型&#xff08;abstract data type, ADT&#xff09;以通用的方式描述数据类型。C中类的概念非常适合于ADT方法。例如&#xff0c;C程序通过堆栈来管理自动变量&#xff0c;堆栈可由对它执行的操作来描述。可创建空堆栈&#xff1b;可将数据项添加到堆顶&#xff08;…

大文件断点续传解决方案:基于Vue 2与Spring Boot的完整实现

大文件断点续传解决方案:基于Vue 2与Spring Boot的完整实现 在现代Web应用中,大文件上传是一个常见但具有挑战性的需求。传统的文件上传方式在面对网络不稳定、大文件传输时往往表现不佳。本文将详细介绍如何实现一个支持断点续传的大文件上传功能,结合Vue 2前端和Spring Bo…

LeNet-5:手写数字识别经典CNN

配套讲解视频&#xff0c;点击下方名片获取20 世纪 90 年代&#xff0c;计算机已经能识别文本&#xff0c;但图片识别很困难。比如银行支票的手写数字识别&#xff0c;传统方法需要人工设计规则&#xff0c;费时费力且精度不高。 于是&#xff0c;Yann LeCun 及其团队提出了 Le…

如何在 C# 中将文本转换为 Word 以及将 Word 转换为文本

在现代软件开发中&#xff0c;处理文档内容是一个非常常见的需求。无论是生成报告、存储日志&#xff0c;还是处理用户输入&#xff0c;开发者都可能需要在纯文本与 Word 文档之间进行转换。有时需要将文本转换为 Word&#xff0c;以便生成结构化的 .docx 文件&#xff0c;使内…

Open SWE:重构代码协作的智能范式——从规划到PR的全流程自动化革命

在软件开发的演进史上,工具链的每一次革新都深刻重塑着开发者的工作方式。LangChain AI推出的Open SWE,作为首个开源的异步编程代理,正在重新定义代码协作的边界——它不再仅仅是代码生成工具,而是构建了从代码库分析、方案规划、代码实现到拉取请求创建的端到端自动化工作…

【ARDUINO】通过ESP8266控制电机【待测试】

需求 通过Wi-Fi控制Arduino驱动的3V直流电机。这个方案使用外部6V或9V电源&#xff0c;ESP8266作为Wi-Fi模块&#xff0c;Arduino作为主控制器&#xff0c;L298N作为电机驱动器。 手机/电脑 (Wi-Fi客户端) | | (Wi-Fi) | ESP8266 (Wi-Fi模块, AT指令模式) | | (串口通信) | A…

cuda编程笔记(18)-- 使用im2col + GEMM 实现卷积

我们之前介绍了cudnn调用api直接实现卷积&#xff0c;本文我们探究手动实现。对于直接使用for循环在cpu上的实现方法&#xff0c;就不过多介绍&#xff0c;只要了解卷积的原理&#xff0c;就很容易实现。im2col 的核心思想im2col image to column把输入 feature map 的每个卷积…

Loopback for Mac:一键打造虚拟音频矩阵,实现跨应用音频自由流转

虚拟音频设备创建 模拟物理设备&#xff1a;Loopback允许用户在Mac上创建虚拟音频设备&#xff0c;这些设备可被系统及其他应用程序识别为真实硬件&#xff0c;实现音频的虚拟化传输。多源聚合&#xff1a;支持将麦克风、应用程序&#xff08;如Skype、Zoom、GarageBand、Logic…

深入解析Django重定向机制

概述 核心是一个基类 HttpResponseRedirectBase&#xff0c;以及两个具体的子类 HttpResponseRedirect&#xff08;302 临时重定向&#xff09;和 HttpResponsePermanentRedirect&#xff08;301 永久重定向&#xff09;。它们都是 HttpResponse 的子类&#xff0c;专门用于告诉…

【Java实战⑳】从IO到NIO:Java高并发编程的飞跃

目录一、NIO 与 IO 的深度剖析1.1 IO 的局限性1.2 NIO 核心特性1.3 NIO 核心组件1.4 NIO 适用场景二、NIO 核心组件实战2.1 Buffer 缓冲区2.2 Channel 通道2.3 Selector 选择器2.4 NIO 文件操作案例三、NIO2.0 实战3.1 Path 类3.2 Files 类3.3 Files 类高级操作3.4 NIO2.0 实战…

OpenCV 实战:图像模板匹配与旋转处理实现教程

目录 一、功能概述&#xff1a;代码能做什么&#xff1f; 二、环境准备&#xff1a;先搭好运行基础 1. 安装 Python 2. 安装 OpenCV 库 3. 准备图像文件 三、代码逐段解析&#xff1a;从基础到核心 1. 导入 OpenCV 库 2. 读取图像文件 3. 模板图像旋转&#xff1a;处理…

一、cadence的安装及入门教学(反相器的设计与仿真)

一、Cadence的安装 1、安装VMware虚拟机 2、安装带有cadence软件的Linux系统 注&#xff1a;网盘链接 分享链接&#xff1a;https://disk.ningsuan.com.cn/#s/8XaVdtRQ 访问密码&#xff1a;11111 所有文件压缩包及文档密码&#xff1a; Cadence_ic 3、安装tsmc18工艺库…

用ai写了个UE5插件

文章目录实际需求1.头文件2.源文件3.用法小结实际需求 这个需求来源于之前的一个项目&#xff0c;当时用了一个第三方插件&#xff0c;里边有一些绘制线段的代码&#xff0c;c层用的是drawdebugline&#xff0c;当时看底层&#xff0c;觉得应该没问题&#xff0c;不应该在rele…

机器学习从入门到精通 - 强化学习初探:Q-Learning到Deep Q-Network实战

机器学习从入门到精通 - 强化学习初探&#xff1a;从 Q-Learning 到 Deep Q-Network 实战 一、开场白&#xff1a;推开强化学习这扇门 不知道你有没有过这种感觉 —— 盯着一个复杂的系统&#xff0c;既想让它达到某个目标&#xff0c;又苦于无法用传统规则去精确描述每一步该怎…

【OpenHarmony文件管理子系统】文件访问接口解析

OpenHarmony文件访问接口&#xff08;filemanagement_file_api&#xff09; 概述 OpenHarmony文件访问接口&#xff08;filemanagement_file_api&#xff09;是开源鸿蒙操作系统中的核心文件系统接口&#xff0c;为应用程序提供了完整的文件IO操作能力。该项目基于Node-API&…

云手机运行是否消耗自身流量?

云手机运行是否消耗自身流量&#xff0c;取决于具体的使用场景和设置&#xff1a;若用户在连接云手机时&#xff0c;使用的是家中Wi-Fi、办公室局域网等非移动数据网络&#xff0c;那么在云手机运行过程中&#xff0c;基本不会消耗用户自身的移动数据流量&#xff0c;在家中连接…

JavaSe之多线程

一、多线程基本了解 1、多线程基本知识 1.进程:进入到内存中执行的应用程序 2.线程:内存和CPU之间开通的通道->进程中的一个执行单元 3.线程作用:负责当前进程中程序的运行.一个进程中至少有一个线程,一个进程还可以有多个线程,这样的应用程序就称之为多线程程序 4.简单理解…

产品月报|睿本云8月产品功能迭代

睿本云8月更新已陆续上线&#xff01; 睿本云8月产品月报&#xff0c;点击查收&#x1f447;小程序支付成功弹窗广告、企业会员增加卡券销售和卡券退货模块、工厂端可批量新增多门店订货单、门店端和工厂端新增“极速订货”、商品调拨业务支持自定义多种流程配置等功能迭代更新…

融云:当我们谈论 AI 重构业务时,我们到底在谈论什么

所有业务都值得用 AI 重新做一次。 这句话正在从一句鼓舞人心的口号&#xff0c;演变为一场无人可避的商业现实。AI 带来的结构性机会&#xff0c;意味着企业有机会从根本上重构成本、效率与体验的曲线。但这一切最终都要回到一个无比务实的问题上&#xff1a; AI 究竟如何在我…

org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1异常

org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1异常问题解决一、问题背景二、错误现象三、原因分析核心问题&#xff1a;字符集不匹配四、解决过程试错路径记录五、最终方案1.创建launch.json文件&#xff0c;修改VSCode…