uniapp 下拉刷新 nvue list组件 cell组件

6 篇文章 0 订阅
5 篇文章 1 订阅

uniapp nvue 下拉刷新组件使用 样式 以及布局下拉都可正常使用 具体看使用方法即可

        <!-- list组件 -->
		<list class="listView" show-scrollbar="false">
			<!-- 下拉刷新 -->
			<refresh @pullingdown="pullingdown" :display="showLoading ? 'show':'hide'" @refresh="onrefresh" class="refreshLayer">
				<image class="loadingImg" src="/static/app-plus/image/loading.gif"></image>
				<text class="loadingTitle">刷新中...</text>
			</refresh>
            <cell v-for="(item,index) in dataList" :key="index">
				<view class="listItemView" :style="index==0? 'margin-top:30rpx' : ''">
					<view class="marginleftView">
						<view class="showInformationView">
							<view class="userInformationItem">
								<text class="showLeftText">姓名</text>
								<text class="showRightText">{{item.name}}</text>
							</view>
							<view class="userInformationItem">
								<text class="showLeftText">手机号</text>
								<text class="showRightText">{{item.phoneNum}}</text>
							</view>
							<view class="userInformationItem">
								<text class="showLeftText">微信号</text>
								<text class="showRightText">{{item.weichatNum}}</text>
							</view>
							<view class="userInformationItem">
								<text class="showLeftText">性别</text>
								<text class="showRightText">{{item.sex == 1 ? '男' : '女'}}</text>
							</view>
							<view class="userInformationItem">
								<text class="showLeftText">出生日期</text>
								<text class="showRightText">{{item.birthday}}</text>
							</view>
						</view>
					</view>
				</view>
			</cell>
		</list>

 

<script>
	export default {

		data() {
			return {
				dataList: [],
				showLoading: false,
			};
		},

		onShow() {
		},

		//加载完成
		onLoad(options) {
			this.getPageDataList(false)
		},

		methods: {
			//下拉刷新
			onrefresh() {
				this.showLoading = true
				//根据当前按钮判断请求数据类型
				this.getPageDataList(true)
			},
			//获取当前页面需要展示的数据
			//tp 列表数据类型
			//isRefresh 是否为下拉刷新
			getPageDataList: function(isRefresh) {
				//判断是否为下拉刷新
				if (isRefresh) {
					this.showLoading = false
				}
			},
		}
	}
</script>

 

	.listView {
		flex: 1;
		background-color: #F5F5F5;
		margin-top: 110rpx;
		padding-bottom: 100rpx;
	}


	.listItemView {
		margin-left: 30rpx;
		margin-bottom: 30rpx;
		width: 690rpx;
		background-color: #FFFFFF;
		border-radius: 20rpx;
	}
	.showInformationView {
	}

	.userInformationItem {
		margin-top: 32rpx;
		flex-direction: row;
	}

	.showLeftText {
		width: 214rpx;
		font-size: 30rpx;
		color: #999999;
	}

	.showRightText {
		width: 400rpx;
		font-size: 30rpx;
		color: #000000;
		text-align: right;
	}

    .refreshLayer{
		left: 0;
		right: 0;
		padding: 20rpx;
		flex-direction: row;
		align-items: center;
		justify-content: center;
	}
	.loadingImg{
		width: 40rpx;
		height: 40rpx;
		margin-right: 20rpx;
	}
	.loadingTitle {
		text-align: center;
		font-size: 30rpx;
	}

 

以下是一个示例的uniapp下拉刷新组件代码: ```html <template> <view> <view class="refresh-text">{{refreshText}}</view> <scroll-view :style="{height:scrollViewHeight + 'px'}" scroll-y="true" @scrolltoupper="onScrollToUpper" @scroll="onScroll"> <view class="list"> <view class="list-item" v-for="(item, index) in list" :key="index"> {{item}} </view> </view> </scroll-view> </view> </template> <script> export default { data() { return { list: [], // 数据列表 page: 1, // 当前页码 isLoading: false, // 是否正在加载数据 refreshText: '下拉刷新', // 刷新文本 startScrollTop: 0, // 滚动条开始位置 scrollViewHeight: 0, // 滚动区域高度 }; }, methods: { // 下拉刷新 onScrollToUpper() { if (this.isLoading) { return; } this.isLoading = true; this.refreshText = '正在刷新...'; // 模拟加载数据 setTimeout(() => { this.list = ['刷新数据1', '刷新数据2', '刷新数据3']; this.page = 1; this.isLoading = false; this.refreshText = '下拉刷新'; }, 2000); }, // 滚动事件 onScroll(e) { if (this.isLoading) { return; } const scrollTop = e.detail.scrollTop; const scrollViewHeight = e.detail.scrollHeight; const windowHeight = uni.getSystemInfoSync().windowHeight; if (scrollTop < this.startScrollTop && scrollTop <= 0) { // 向上滚动并且滚动到顶部,触发下拉刷新 this.onScrollToUpper(); } else if (scrollViewHeight - (scrollTop + windowHeight) <= 10) { // 滚动到底部,触发加载更多 this.onLoadMore(); } this.startScrollTop = scrollTop; this.scrollViewHeight = scrollViewHeight; }, // 加载更多 onLoadMore() { if (this.isLoading) { return; } this.isLoading = true; // 模拟加载数据 setTimeout(() => { this.list = [...this.list, `加载更多数据${this.page + 1}`, `加载更多数据${this.page + 2}`, `加载更多数据${this.page + 3}`]; this.page++; this.isLoading = false; }, 2000); }, }, }; </script> ``` 这个示例包含一个下拉刷新组件和一个滚动加载更多组件,可以在下拉到顶部时触发下拉刷新,滚动到底部时触发加载更多。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值