uniapp的分页触底加载更多

<template>
	<view class="p-2">
		<view class="wrap p-2 mb-2">
			<view class="d-flex a-center j-sb">
				<view class="d-flex flex-shrink">
					<view>班组:</view>
					<view class="text-primary ml-2">乙班</view>
				</view>
				<view class="d-flex flex-shrink a-center">
					<view>班次</view>
					<view class="text-primary ml-2">早班</view>
				</view>
			</view>
			<view class="d-flex a-center mt-1">
				<view>开始时间:</view>
				<view class="ml-2">222222222222222222</view>
			</view>
			<view class="d-flex a-center mt-1">
				<view>结束时间:</view>
				<view class="ml-2">222222222222222222</view>
			</view>
			<view class="d-flex a-center mt-1">
				<view>操作时间:</view>
				<view class="ml-2 text-secondary">222222222222222222</view>
			</view>
		</view>
		<u-loadmore class="mt-1" :status="status" :loading-text="loadingText" :loadmore-text="loadmoreText"
			:nomore-text="nomoreText" :line="true" />
	</view>
</template>

<script>
	export default {
		data() {
			return {
				monthId: null,
				status: 'nomore',
				loadingText: '努力加载中',
				loadmoreText: '已加载',
				nomoreText: '已加载全部数据',
				listData: [],
				tableData: {
					page: 1,
					limit: 10,
					total: 0,
					orderId: null,
					type: 1
				},
			}
		},
		onLoad(opt) {
			console.log(opt);
			this.monthId = opt.id
			this.getData()
		},
		onReachBottom() {
			if (this.tableData.page >= this.tableData.total) {
				this.status = 'nomore'
				return;
			}
			this.tableData.page++;
			this.getData()
		},
		methods: {
			getData() {
				this.status = 'loading'
				this.tableData.orderId=this.monthId,
				this.$http.post('/dps/dps-work-order/page', this.tableData).then(res => {
					this.tableData.total = res.data.totalPages
					this.status = ''
					this.listData = this.listData.concat(res.data.list)
				})
			},
		}
	}
</script>

<style lang="scss" scoped>
	.wrap {
		background-color: #fff;
		border-radius: 15rpx;
		box-shadow: 0 5rpx 10rpx rgba(0, 0, 0, .2);
	}
</style>

UniApp 中实现触底分页可以通过以下步骤进行: 1. 在你的页面中定义一个数据列表数组,用于存储分页加载的数据: ```javascript data() { return { dataList: [], // 数据列表数组 pageNo: 1, // 当前页码 pageSize: 10, // 每页数据条数 hasMore: true, // 是否还有更多数据 isLoading: false // 是否正在加载中 }; } ``` 2. 在页面的 `onLoad` 或 `onShow` 生命周期钩子中初始化数据列表,调用数据加载方法: ```javascript onLoad() { this.loadData(); } ``` 3. 实现数据加载方法,根据当前页码和每页数据条数从服务器获取数据并更新 dataList 数组: ```javascript methods: { loadData() { if (this.isLoading || !this.hasMore) { return; // 如果正在加载中或没有更多数据,则不执行加载操作 } this.isLoading = true; // 设置加载状态为 true // 调用接口获取数据,传递当前页码和每页数据条数 api.getDataList(this.pageNo, this.pageSize) .then(res => { if (res.success) { const newDataList = res.data; // 获取到的新数据列表 this.dataList = this.dataList.concat(newDataList); // 将获取到的新数据追加到 dataList 数组中 if (newDataList.length < this.pageSize) { this.hasMore = false; // 如果返回的数据条数小于每页数据条数,则表示没有更多数据了 } else { this.pageNo++; // 更新页码 } } }) .finally(() => { this.isLoading = false; // 加载完成,重置加载状态为 false }); } } ``` 4. 在页面的 `onReachBottom` 事件中触发加载更多数据: ```javascript onReachBottom() { this.loadData(); } ``` 通过以上步骤,你可以实现一个基本的触底分页功能。当页面滚动到底部时,会自动触发 `onReachBottom` 事件,然后调用 `loadData` 方法加载更多数据并更新数据列表。需要根据实际情况调整接口调用和数据处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值