uni-app上拉加载,下拉刷新

文件路径根据自己的项目进行修改,里面涉及的上拉加载更多的uni-load-more.vue组件,到官方组件里下载使用。

  1. 需要在pages.json里配置
{
	"path": "pages/news/news",
		"style": {
			"navigationBarTitleText": "新闻中心",
			"enablePullDownRefresh": true
		}
}

2. 自己写的json数据,代码如下:
news.json

{
	"data":[
		{"id":"0","title":"1双龙聚凤 璀璨人生翡翠 色泽光鲜色彩伊人","public_time":"2019-01-01","img":"/static/paint1.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"1","title":"2天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/paint2.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"2","title":"3双龙聚凤 璀璨人生翡翠 色泽光鲜色彩伊人","public_time":"2019-01-01","img":"/static/paint1.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"3","title":"4天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/paint2.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"4","title":"5天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/w8.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"5","title":"6天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/paint2.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"6","title":"7天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/banner.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"7","title":"8天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/paint2.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"},
		{"id":"8","title":"9天然缅甸翡翠 外形简洁饱满 异常圆润 意钱财滚滚来","public_time":"2019-01-01","img":"/static/banner.png",
		"content":"科普推广:科学知识、科学思维方法、科学态度。将“科学知识原理”转化为趣味性、游戏化、生活化的课程,深入浅出,将科学知识还原为最浅显的生活原理,最深层次激发孩子的联想,培养和建立能力素质。"}
	],
	"pages_count":"9"
}

**

3. news.vue

**

<template>
	<view>
		<view class="list" v-for="(item,index) in newsList" :key="index">
			<view class="list-left">
				<image :src="item.img"></image>
			</view>
			<view class="list-right">
				<view class="list-top">
					<text class="elli">{{item.title}}</text>
					<text>{{item.public_time}}</text>
				</view>
				<view class="list-con elli3">{{item.content}}</view>
			</view>
		</view>
		<text class="loading-text">
		{{loadingType === 0 ? contentText.contentdown : (loadingType === 1 ? contentText.contentrefresh : contentText.contentnomore)}}</text>
	</view>
</template>

<script>
	import uniLoadMore from '../../components/uni-load-more.vue';
	var  _self,
	page = 1;
	export default{
		components: {uniLoadMore},
		data(){
			return{
				newsList:[],
				loadingType: 0,
				contentText: {
					contentdown: "上拉显示更多",
					contentrefresh: "正在加载...",
					contentnomore: "没有更多数据了"
				}
			}
		},
		 onLoad: function (options) {
			_self = this;
			this.getNewsList();
		},
		// 下拉刷新
		onPullDownRefresh() {
			this.getNewsList();
		},
		// 上拉加载
		onReachBottom: function() {
			console.log(_self.newsList.length);
			if (_self.loadingType != 0) {//loadingType!=0;直接返回
				return false;
			}
			_self.loadingType = 1;
			uni.showNavigationBarLoading();//显示加载动画
			uni.request({
				url:'../../static/data/news.json?page='+page,
				success: function(res) {
					if (_self.newsList.length==res.data.pages_count) {//没有数据
						_self.loadingType = 2;
						uni.hideNavigationBarLoading();//关闭加载动画
						return false;
					}
					page++;//每触底一次 page +1
					// console.log(page);
					for(var i=_self.newsList.length;i<res.data.pages_count;i++){
						_self.newsList = _self.newsList.concat(res.data.data[i]);//将数据拼接在一起
					}
					_self.loadingType = 0;//将loadingType归0重置
					uni.hideNavigationBarLoading();//关闭加载动画
					
				}
			});
		},
		methods:{	
			getNewsList: function() {//第一次回去数据
				_self.loadingType = 0;
				uni.showNavigationBarLoading();
				uni.request({
					url: '../../static/data/news.json?page=1',
					success: function(res) {
						let newsList =[];
						for(var i=0;i<6;i++){
							newsList.push(res.data.data[i]);
						}
						_self.newsList = newsList;
						if(res.data.pages_count==res.data.data.length){
							uni.showToast({
								title: '已是最新',
								duration: 2000
							});
						}
						uni.hideNavigationBarLoading();
						uni.stopPullDownRefresh();//得到数据后停止下拉刷新
					}
				});
				
			}

		}
		
	}
</script>

<style lang="scss">
	.elli{
		overflow:hidden;
	    text-overflow:ellipsis;
	    white-space:nowrap;
	}
	.elli2{
		overflow: hidden;
		text-overflow: ellipsis;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
	}
	.elli3{
		overflow: hidden;
		text-overflow: ellipsis;
		display: -webkit-box;
		-webkit-line-clamp: 3;
		-webkit-box-orient: vertical;
	}
	.list{
		width: 94%;
		display: flex;
		flex-direction: row;
		padding: 3%;
		border-bottom: 1upx solid #ebe8e8;
		.list-left{
			width: 35%;
			margin-right: 3%;
			image{
				width: 220upx;
				height: 140upx;
				padding: 3%;
				border: 1upx solid #ebe8e8;
				box-sizing: border-box;
			}
		}
		.list-right{
			width: 65%;
			color: #999999;
			font-size: 24upx;
			.list-top{
				display: flex;
				flex-direction: row;
				justify-content: space-between;
				padding-bottom: 5upx;
				text{
					&:nth-child(1){
						color: #333;
						font-size: 30upx;
						width: 65%;
					}
				}
			}
		}
	}
	.loading-text{
		height: 80upx;
		line-height: 80upx;
		font-size: 30upx;
		display: flex;
		flex-direction: row;
		justify-content: space-around;
	}
</style>

猜你喜欢

转载自blog.csdn.net/weixin_42301962/article/details/87920240