vue上拉加载更多

23 篇文章 1 订阅

app.vue

<template>
  <div id="app">
    <!-- <HelloWorld msg="Welcome to Your Vue.js App"/> -->
		<div class="con">
			<p v-for="(el,key) in arr" :key="key">{{el}}</p>
		</div>
		
		<LoadMoreCom v-on:getNewData="getNewData" :loadMoreObj="loadMoreObj"></LoadMoreCom>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
import LoadMoreCom from './components/LoadMoreCom.vue'

export default {
  components: {
    HelloWorld,LoadMoreCom
  },
	data(){
		return {
			arr:[],
			loadMoreObj:{
				url:'/api/getInfo',
				pageSize:10,
			}
		}
	},
	methods:{
		getNewData(_arr){
			this.arr=this.arr.concat(_arr);
		}
	}
}
</script>

<style>
p{padding: 10px 0;margin-bottom: 10px;height: 50px;background: #f00;color: #fff;}
</style>

LoadMoreCom.vue

<template>
  <div class="loadMore" v-loading="isLoading">
	  {{isEnd?'没有了':'加载更多'}}
  </div>
</template>

<script>
import $ from 'jquery'
export default {
	props: ['loadMoreObj'],
	created(){
		var that=this;
		$(window).scroll(function(){
			// scroll at bottom
			if ($(window).scrollTop() + $(window).height() == $(document).height()) {
				that.startLoad();
			}
		});
		this.startLoad();
	},
	data(){
		return {
			isEnd:false,
			isLoading:false,
			curPage:1,
		}
	},
	methods:{
		startLoad(){
			if(this.isLoading || this.isEnd){
				return;
			}
			this.isLoading=true;
			var that=this;
			// ajax需要的参数,自己根据逻辑修改
			var obj={
				curPage:this.curPage,
				pageSize:this.loadMoreObj.pageSize,
				url:this.loadMoreObj.url,
			}
			console.log(obj);
			// 模拟数据请求
			setTimeout(function(){
				that.isLoading=false;
				that.curPage++;//当前页码
				
				// 假如第四页结束
				if(that.curPage==4){
					that.pageEnd();
					return;
				}
				
				var arr=[
					"你好1","你好1","你好1","你好1","你好1","你好1","你好1","你好1",
				]
				that.$emit('getNewData',arr);
			},1000)
		},
		// 最后一页
		pageEnd(){
			this.isEnd=true;
		}
	},
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
	.loadMore{text-align: center;}
</style>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值