页面下拉刷新
onPullDownRefresh监听该页面用户下拉刷新事件
- 在
pages.json
里,找到的当前页面的pages节点,并在style
选项中开启enablePullDownRefresh
。 - 当处理完数据刷新后,
uni.stopPullDownRefresh
可以停止当前页面的下拉刷新。 - 调用uni.startPullDownRefresh(OBJECT)后触发下拉刷新动画,效果与用户手动下拉刷新一致。
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "列表",
"enablePullDownRefresh": true
}
}
],
export default {
data() {
return {
}
},
onLoad: function (options) {
},
// 下拉加载
onPullDownRefresh() {
setTimeout(function () {
uni.stopPullDownRefresh();
}, 1000);
},
methods: {
}
}
上拉加载下一页
onReachBottom监听页面滚动到底部的事件
- 在pages.json里定义具体页面底部的触发距离onReachBottomDistance,比如设为50,那么滚动页面到距离底部50px时,就会触发onReachBottom事件,默认值为50。
- 如使用scroll-view导致页面没有滚动,则触底事件不会被触发
export default {
data() {
return {
}
},
onLoad: function (options) {
},
// 上拉加载
onReachBottom() {
if (this.msgList.length >= this.dataTotal) {
return false
}
this.getList()
},
methods: {
}
}
完整示例:
<template>
<view class="container">
<uni-table stripe emptyText="暂无更多数据">
<!-- 表头行 -->
<uni-tr>
<uni-th width="60" align="center">编号</uni-th>
<uni-th width="80" align="center">姓名</uni-th>
<uni-th width="90" align="center">职位</uni-th>
<uni-th width="80" align="center">日期</uni-th>
</uni-tr>
<!-- 表格数据行 -->
<uni-tr v-for="(item,index) in msgList" :key="index" style="font-size: 10rpx;">
<uni-td align="center">{{item.id}}</uni-td>
<uni-td align="center">{{item.name}}</uni-td>
<uni-td align="center">{{item.position}}</uni-td>
<uni-td align="center">{{item.time}}</uni-td>
</uni-tr>
</uni-table>
<view class="loading-more" v-if="isLoading || msgList.length > 10">
<text class="loading-more-text">{{loadingText}}</text>
</view>
</view>
</template>
<script>
import request from '@/request/request.js'
export default {
data() {
return {
dataTotal: 0, //数据总数
page: 0, //页码
isNoData: false, //没有更多数据
isLoading: false, //加载中
loadingText: '', //加载文字
msgList: [], //数据列表
}
},
onShow() {
this.page = 0
this.getList()
},
onLoad() {
},
// 上拉加载
async onReachBottom() {
if (this.msgList.length >= this.dataTotal) {
return false
}
this.getList()
},
// 下拉刷新
onPullDownRefresh() {
this.page = 0
this.getList()
},
methods: {
// 获取列表
async getList() {
if (this.isLoading) {
return
}
let params = {
pageNum: this.page + 1,
pageSize: 20
}
this.isLoading = true
this.loadingText = '加载中...'
let res = await request('user/userlist', params, 'GET')
this.isLoading = false
uni.stopPullDownRefresh()
if (res.rspCode == '200') {
this.dataTotal = res.data.dataTotal
if (this.page == 0) {
this.msgList = []
}
if (res.data.dataList.length > 0) {
res.data.dataList.forEach((item) => {
this.msgList.push(item)
});
this.page++;
}
this.isNoData = (this.msgList.length >= this.dataTotal);
} else {
this.isNoData = true;
console.log(res.rspMsg)
}
if (this.isNoData) {
this.loadingText = '没有更多了'
}
},
},
}
</script>