Skip to content
本页目录

下拉刷新

演示代码

html
<template>
	<page-panel  title="列表"
	:refresh="true" @reload="reload" loadmore @loadmorefun="loadmorefun"
	:apiLoadingStatus="apiLoadingStatus" 
	ref="page" 
		@scroll="bodyScroll">
			<view slot="gBody">
				<text 
				v-for="(item, idx) in listData" :key="idx"  class="demo block">{{item}}</text>
			</view>
		</page-panel>
	</template>
	<script>
	// 模拟数据
	var data = [1,2,3,4,5,6,7,8]; 
	// 模拟页码
	var page = 1;
	export default {
		data() {
			return {
				listData         : [],
				pageLoading      : true,
				// 用于记录是否有 api 请求正在执行
				apiLoadingStatus : false
			}
		},
		onLoad: function() {
			// 页码加载时第一次加载数据
			page = 1;
			this.getdata();
		},
		methods: {
			// 数据加载函数
			// isReload 函数用于识别是不是下拉刷新执行的
			getdata : function(isReload){
				this.apiLoadingStatus = true;
				console.log('加载函数运行,页码 : ' + page);
				// 模拟 api 请求刷新数据
				setTimeout(()=>{
					// 对演示数据随机刷新模拟数据刷新
          let param = {
          	pageNo: page,
          	pageSize: 10
          }
					var demoArr   = this.$xapi.getList(param);
					if(page >= 2){
						this.listData = this.listData.concat(demoArr);
            //结束加载更多状态
            this.$refs.page.stoploadmore(); 
            let isnomore=demoArr.length<page*10
            //是否还有下一页
            if(isnomore){
            	this.$refs.page.nomore();
            }
					}
					// 第一页 有可能是第一次加载或者刷新
					else{
						this.listData    = [];
						this.listData    = demoArr;
						this.pageLoading = false;
						// 刷新
						if(isReload){this.$refs.page.endReload();}
					}
					page++;
					this.apiLoadingStatus = false;
				}, 1000);
			},
			reload : function(){
				page = 1;
				this.getdata(true);
			},
			//加载更多
			loadmorefun: function(){
				this.getdata();
			},
			// 滚动区域滚动事件
			bodyScroll : function (e) {
				//console.log(e);
				console.log(e.detail.scrollTop);
			}
		}
	}
	</script>
	<style>
	.demo{margin:30rpx; line-height:200rpx;}
	</style>

注意事项

  1. 利用 page-panel 组件实现下拉刷新, 属性全部添加到 page-panel 组件上;
  2. page-panel 组件添加 :refresh="true" 属性开启下拉刷新;
  3. page-panel 组件添加 @reload="reload" 事件监听、实现下拉刷新数据刷新逻辑;
  4. page-panel 组件添加 @scroll="bodyScroll" 可以监听滚动区域滚动事件及滚动值;

Attributes

参数说明类型默认值
refreshText刷新过程中展示的文本Array['继续下拉刷新','松开手指开始刷新','数据刷新中','数据已刷新']
refreshBgColor刷新过程中组件的背景颜色Array['#FFFFFF','#FFFFFF','#FFFFFF','#63D2BC']
refreshColor刷新过程中组件的文本颜色Array['rgba(69, 90, 100, 0.6)','rgba(69, 90, 100, 0.6)','#63D2BC','#FFFFFF']
refreshFontSize组件文本尺寸String'26rpx'

Event

事件说明
reload组件展示加载时触发,可以触发事件时完成刷新业务逻辑

method

方法说明
endload ()用于停止组件的加载动画并关闭加载组件
下拉刷新已经加载完毕