uniapp实现下拉刷新和上拉加载更多(暂时没有数据)

26 篇文章 3 订阅

https://uniapp.dcloud.io/api/ui/pulldown.html#onpulldownrefresh

全局下拉刷新很少用,一般是那个页面需要则给那个页面开启就行

首先需要开启下拉刷新 在pages.json文件里

将"enablePullDownRefresh": true,

"pages": [{

            "path": "pages/index/index",
            "style": {
                "navigationBarTitleText": "首页",
                "enablePullDownRefresh": true,
                "navigationStyle": "custom",
                
                //当距离底部200时候  发生触底
                "onReachBottomDistance":200
          }
}]

然后在你自己需要下拉的页面写,和data,methods平级写onPullDownRefresh(){}和onReachBottom(){}

<template>
	<view class="goods_list">
		<goods-list @goodsItemClick="goGoodsDetail" :goods="goods"></goods-list>
	</view>
</template>

<script>
	import goodsList from '../../components/goods-list/goods-list.vue'
	export default {
        components: {"goods-list":goodsList},  
		data() {
			return {
				goods: [],
                QueryParams:{
                      pagenum:1,
                      pagesize:10  
                },
                //总页数
                totalPages :1,
			}
		},                                  
		methods: {
			// 获取商品列表数据
			//async getGoodsList(callBack) {
            async getGoodsList() {
				const res = await this.$myRuquest({
					url: `请求`
				})
                //获取总条数
                const total = res.total
                //计算总页数----总共几页 = Math.ceil( 总条数 / 一页条数)
                this.totalPages = Math.ceil(total/this.QueryParams.pagesize)
				this.goods = [...this.goods,...res.data.message]
				//如果这个callBack有再调用没有就不调用
				//callBack && callBack()
			},
			// 导航到商品详情页
			goGoodsDetail (id) {
				uni.navigateTo({
					url: `路径`
				})
			}
		},
		onLoad () {
			this.getGoodsList()
		},
		//触底的时候触发
		onReachBottom() {
            //判断还有无,下一页数据
            
            //判断当前的页码是否大于等于  总页数
            if(this.QueryParams.pagenum >= this.totalPages){
                //没有下一页数据
                uni.showToast({
                    title:'没有下一页数据',
                })    
            }else{
                //还有下一页
                this.QueryParams.pagenum++;
			    this.getGoodsList()
            }

		},
		//下拉刷新
        //1、重置数据 2、重置页码为1 3、重新发生请求 4、关闭等待效果
		onPullDownRefresh() {
            //1、重置数组
			this.goods = []
            //2、重置页码为1
            this.QueryParams.pagenum = 1
            //3、重新发生请求
			setTimeout(()=>{
               //数据请求成功后去掉下拉
			  this.getGoodsList(()=>{
				  //下拉完让它消失
					uni.stopPullDownRefresh()
				})	
			},1000)
		}
	}
</script>
<style lang="scss">
	.goods_list {
		background: #eee;;
	}
	.isOver {
		width: 100%;
		height: 50px;
		line-height: 50px;
		text-align: center;
		font-size: 28rpx;
	}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值