vue的加载更多设计

首先我需要去引入一个loading组件   和  一个404 的页面组件

这里使用到的是uni-load-more  ,大家可以从uni-app官网中获取

使用说明

首先我需要去引入一个loading组件   和  一个404 的页面组件​​​​​​

1.uni-load-more这个组件有个属性 loadingType: 0, // 加载状态  0 显示 上拉加载更多  1 加载中 2 无更多 

2.在页面的设计中需要设计5个值

                 

               params:{}, //请求数据需要的参数 

               pageContent: [], //页面需要展示的数组
               current_page: 1, //当前页面
                last_page: 1, //最终页面
                loadingType: 0, // 加载状态  0 上拉加载更多  1 中 2 无更多 
                showContent: 0, //页面状态  0 请求中 1 有数据展示 2 无数据404

3. 引入组件  并且加入当前页面的局部组件中

    import uniLoadMore from '@/components/uni-load-more' //loading组件

    import uniLoadMore from '@/components/blankPage'   // 空白页面  

    components: {
            uniLoadMore
     }

4. 页面中的代码

methods:{
    //处理页面传递过来的参数
    setdataParam(optionObj){
		if(optionObj instanceof Object){
		      this.param = optionObj;
		}
	},
    refresh() {
        // 数据制空
		this.pageContent = [];
        // 加载状态 为加载中
		this.loadingType = 1;
        // 传递的参数为param
        var param = this.param;
        加载为第一页
        this.param.page = 1;
        // 加载数据
		this.getContent(this.param);
				
	},
    // 设置分页
	setPagination(current_page, last_page) {
        //这里是伪代码
		this.current_page = current_page;
		this.last_page = last_page;
	},
    // 判断是否有下一页
	ishasPage(page, last_page) {
		return page < last_page;
	},
    renderContent(data) {
       // 处理逻辑
       if(success){
         var current_page = data.data.meta.current_page;
		 var last_page = data.data.meta.last_page;
		 var data = data.data.data;
		 this.setPagination(current_page, last_page);
         if(current_page==last_page){
			  this.loadingType = 2;
		 }
         if(data.length==0&&param.current_page==1){
             this.showContent = 2;
			 this.loadingType = 2;  
             return;     
         }
           this.showContent = 1;
           this.pageContent = [...this.pageContent, ...data];
       }
    },
     // 获取内容
	getContent(e) {
        // 需要处理参数e
		this.getcooperates(e).then(data => this.renderContent(data));
	},
    // 下拉加载的逻辑
    onReachBottom(){
        	this.loadingType = 1;
			var current_page = this.current_page;
            var last_page = this.last_page;
			if (this.ishasPage(nextpage,last_page)) {
                // 设置下一页
                this.param.page= this.param.page?(this.param.page+1):2;
				this.getContent(this.param);
			} else {
				this.loadingType = 2;
			}
    },
    mounted() {
       var param = this.$route.params;
       this.setdataParam(param);
       this.refresh();

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值