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>