【无标题】

视频教程
在这里插入图片描述
完成“快速返回顶部”功能/ 当接口数据中已存在当前页和总页数时,如何进行上拉加载等功能
在这里插入图片描述

注意代码中this.data的data指的是什么
在这里插入图片描述
在这里插入图片描述

<template>
	<view>
		<!-- 快速返回顶部 -->
		<uni-list>
			<uni-list-item v-for="(item,index) in data.data" :key="index" :title="item.title" :note="item.price">
				<!-- 改变默认的样式:删除上方的默认项,通过插槽的方法自定义图片,,,其他默认样式也是如此-->
				<image :src="baseURL + item.pic" slot="header"
					style="width: 200rpx; height: 200rpx; min-width: 200rpx;">
				</image>
				<view slot="body" class="body">
					<view class="title">{{item.title}}</view>
					<view class="price">{{item.price}}</view>
				</view>
			</uni-list-item>
		</uni-list>
		<uni-load-more :status="status"></uni-load-more>
		<button type="default" size="mini" class="backTop" @click="gobackTop">回到顶部</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				url: 'http://101.96.128.94:9999/data/product/list.php',
				baseURL: 'http://101.96.128.94:9999/',
				data: {},
				status:'more'
			}
		},
		//发送网络请求,获取数据,获取成功后 再将数据显示在页面上
		//先写生命周期
		mounted() {
			this.getData();
		},
		onReachBottom() {
			const{pno, pageCount} = this.data;  //把当前页page和总页数pageCount从数据项中快速地结构出来,然后做一个判断
			if(pno == pageCount) return;  //如果当前页和总页数时相同的话 就不要再发请求数据了,直接提示没有更多数据了
			
			this.status = 'loading';
			uni.request({
				url: this.url,
				method: 'GET',
				data: {pno: this.data.pno+1},
				success: res => {
					console.log(res);
					res.data.data = [...this.data.data, res.data.data]//将新数据与之前一头的新数据进行合并显示
					this.data = res.data //把网络请求的数据整体保存到定义的data中,要想取得其中的数组,用的就是data下的data 
					const{pno, pageCount} = this.data;
					this.status = pno == pageCount ? 'noMore':'More'; //如果相同 则“没有更多数据了” 否则“上拉加载更多数据”
				},
				fail: () => {},
				complete: () => {}
			})
		}
		//函数 方法
		methods: {
			getData() { //获取数据
				uni.request({
					url: this.url,
					method: 'GET',
					data: {},  //接口数据中已经弄好了当前实在哪一页,所以就不必对当前页进行获取了
					success: res => {
						console.log(res);
						this.data = res.data //把网络请求的数据整体保存到定义的data中,要想取得其中的数组,用的就是data下的data 
					},
					fail: () => {},
					complete: () => {}
				})
			}
		},
		gobackTop(){
			uni.pageScrollTo({
				scrollTop:0,  //点击后返回到顶部
				duration:100  //动画时长
			})
		}
	}
</script>

<style>
	.body {
		display: flex;
		flex-direction: column;
		/*纵向排列*/
		justify-content: space-around;
	}

	.title {
		overflow: hidden;
		text-overflow: ellipsis;
		line-height: 2;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 2;
		/*考虑兼容性*/
	}

	.price {
		color: red;
		font-size: 1.1em;
	}
	.backTop{
		position: fixed;
		bottom: 30px;
		right: 10px;
	}
</style>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

礼礼。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值