vue-infinite-scroll 滚动分页加载

1、安装插件

npm i --save v-infinite-scroll

2、使用

main.js

import infiniteScroll from 'vue-infinite-scroll'

Vue.use(infiniteScroll);

.vue文件

  
  • {{item.productName}}

    {{item.salePrice}}

    加入购物车

.....加载中
export default{ 
	data(){ 
		return {
			goodsList:[],
			sortFlag:true,    //默认升序
			page:1,
			pageSize:8,
			imgsrc: '../static/images/',
			busy:true
		}
	},
	mounted(){
       this.getGoodslist();		
	},
	methods:{
		getGoodslist(flag){
			var param={
				page:this.page,
				pageSize:this.pageSize,
				sort:this.sortFlag?1:-1  //升序或者降序排列
			}
			axios.get("/goods",{
				params:param
			}).then((response)=>{
				let res=response.data;
				console.log('res:'+res.status);
				if(res.status=="0"){
					if(flag){//如果flag为true则表示分页						
					   	this.goodsList=this.goodsList.concat(res.result.list);  //concat数组串联进行合并
					   	if(res.result.count==0){  //如果数据加载完 那么禁用滚动时间 this.busy设置为true
					   		console.log('res.result.count'+res.result.count);
					   		console.log(this.goodsList);
					   		this.busy=true;
					   		console.log('this.busy:'+this.busy);
					   	}else{ 
					   		this.busy=false;
					   		console.log('res.result.count'+res.result.count);
					   	}
					}
					else{//第一次进入页面 完全不需要数据拼接的
						this.goodsList=res.result.list;
						this.busy=false;
					}
				}else{
					this.goodsList=[]
				}
		  })				
	    },
	    sortGoods(){
	    	this.sortFlag=!this.sortFlag;
	    	this.page=1;
	    	this.getGoodslist();
	    	
	    },
	    //当属性滚动的时候  加载  滚动加载
	    loadMore(){	    	
	    	this.busy=true  //将无限滚动给禁用
	    	setTimeout(() => {  //发送请求有时间间隔第一个滚动时间结束后才发送第二个请求
	    	   this.page++;  //滚动之后加载第二页
	    	   this.getGoodslist(true);
            }, 500);	    	
	    }    
	},
   components:{
      navheader,
      navfooter,
      navbread
    }
}   


你可能感兴趣的:(vue-infinite-scroll 滚动分页加载)