uniapp 上拉刷新加载更多数据

1. 用到uniapp的组件

<uni-load-more :status="status" :content-text="contentText"></uni-load-more>

2. 定义变量

data() {
    return {
		dataList: [],
		last_id: '',
		reload: true, //判断是否为第一轮加载,以便赋予index值
		time: 1, //该值是为了动态更新向服务器传递的参数值
		index: 0, //为获取的数据进行分段处理,十条数据一加载
		loadingFlag: true, //判断是否继续上拉加载数据
		status: 'more', //加载状态
		contentText: {
		    contentdown: '点击记载更多',
			contentrefresh: '正在加载...',
			contentnomore: '没有更多数据了'
		}
	};
},

3.  增加事件

onShow() {
		this.getDynamicList();
},
// 触底加载更多
onReachBottom() {
	if (this.loadingFlag == true) {
		this.status = 'more';
		this.getDynamicList();
	}
},

4. 调用接口获取数据,每次获取五条数据,没下拉加载一次获取五条数据

getDynamicList() {
	let that = this;
	let params = {
		offset: 0,
		pageSize: 5
	};
	if (that.last_id) {
		that.status = 'loading';
		params.offset = that.time * 5;
		that.time++;
	}
	console.log('params:', params);
	newsList(params).then(res => {
		if (res.statusCode == 200) {
			let data = res.data.rows;
			let list = [];
			let num = params.pageSize - data.length;
			if (that.reload && data.length == 0) {
				return false;
			} else {
			    if (!that.reload) {
				    that.index += 5;
				}
				if (num !== 0) {
					that.status = 'noMore';
					that.loadingFlag = false;
				}
				for (let j = 0; j < data.length; j++) {
					list.push(data[j]);
				}
				that.last_id = list[list.length - 1].id;
				that.dataList = that.reload ? list : that.dataList.concat(list);
				that.reload = false;
			}
		}
	});
},

亲测有效

1. 首先,在页面的script中定义data数据,包括list列表和page页数。 ``` data: { list: [], page: 1 } ``` 2. 在页面的onLoad生命周期中调用获取数据的方法。 ``` onLoad() { this.getData() } ``` 3. 在页面的methods方法中定义getData方法,用于获取数据。 ``` getData() { // 调用接口获取数据 api.getData(this.data.page).then(res => { // 将新数据添加到list列表中 this.setData({ list: this.data.list.concat(res.data) }) }) } ``` 4. 在页面的onReachBottom生命周期中调用加载更多的方法。 ``` onReachBottom() { this.loadMore() } ``` 5. 在页面的methods方法中定义loadMore方法,用于加载更多数据。 ``` loadMore() { // 将页数加1 this.setData({ page: this.data.page + 1 }) // 调用获取数据的方法 this.getData() } ``` 6. 在页面的onPullDownRefresh生命周期中调用下拉刷新的方法。 ``` onPullDownRefresh() { this.refresh() } ``` 7. 在页面的methods方法中定义refresh方法,用于下拉刷新数据。 ``` refresh() { // 将页数重置为1 this.setData({ page: 1 }) // 将list列表清空 this.setData({ list: [] }) // 调用获取数据的方法 this.getData() // 停止下拉刷新 wx.stopPullDownRefresh() } ``` 8. 在页面的wxml中使用scroll-view组件,并设置onScrollToLower属性为加载更多的方法,设置enablePullDownRefresh属性为true,表示开启下拉刷新。 ``` <scroll-view scroll-y="true" class="scroll-view" enable-back-to-top="{{enableBackToTop}}" enable-flex="true" onScrollToLower="loadMore" enablePullDownRefresh="{{true}}" onPullDownRefresh="refresh"> <!-- 列表内容 --> </scroll-view> ``` 9. 最后,在app.json中设置"window"字段的"enablePullDownRefresh"属性为true,表示全局开启下拉刷新。 ``` { "window": { "enablePullDownRefresh": true } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值