UNIAPP---- 开始时间与结束时间上下滑动选择组件(时间数据结构是一维数组)

UNIAPP---- 开始时间与结束时间上下滑动选择组件(时间数据结构是一维数组)

前言:弹窗组件 : https://editor.csdn.net/md/?articleId=127620129
样式可以参考我之间的 ‘样式整合随意自用版’:https://editor.csdn.net/md/?articleId=127384820

*** 组件: swiperTime.vue ***

在这里插入图片描述
在这里插入图片描述

<template>
	<!-- 选择开始时间和结束时间 上下滑动框 -->
	<view class="display ">
		<view class="fontSize12 colorColor widP20 FontLeft  paddT20 marT6">
			开始时间
		</view>
		<view class="fontSize16 widP25 marL40 ">
			<view class="colorColor marB20">{{preTimeS}}</view>
			<swiper class="scroll-Y" vertical @change='selActive($event,1)'>
				<swiper-item v-for="(item,index) in timeAllS" :key="index">
					{{item}}
				</swiper-item>

			</swiper>
			<view class="colorColor marT20">{{nextTimeS}}</view>
		</view>
		<view class="fontSize16 widP25 FontRight">
			<view class="colorColor marB20">{{preTimeE}}</view>
			<swiper class="scroll-Y" vertical @change='selActive($event,2)'>
				<swiper-item v-for="(item,index) in timeAllE" :key="index">
					{{item}}
				</swiper-item>

			</swiper>
			<view class="colorColor marT20">{{nextTimeE}}</view>
		</view>
		<view class="fontSize12 colorColor widP20 FontRight marL40 paddT20 marT6 ">
			结束时间
		</view>
	</view>

</template>

<script>
	export default {
		data() {
			return {
				timeAllE: [],
				preTimeS: '', //开始时间的 前一个
				nextTimeS: '', //开始时间的 后一个
				preTimeE: '', //结束时间的 前一个
				nextTimeE: '', //结束时间的 后一个
			
			}
		},
		props: {
			//时间数组
			timeAllS: [Array],

		},
		created() {
			this.getTime();
		},
		methods: {
			//传给父组件选中的开始时间和结束时间
			getimeChose() {
				let pars = {
					starTime: this.timeAllS[0],
					endTime: this.timeAllE[0],
				}
				return pars;
			},

			// 渲染上一个时间和下一个时间(时间数据是一维数组时)
			getTime() {
				let timeAllS = this.timeAllS;
				this.timeAllE = this.timeAllE.concat(timeAllS);
				this.timeAllE.shift(); //删除第一条数据
				this.preTimeS = '';
				this.preTimeE = '';
				this.nextTimeS = timeAllS[1];
				this.nextTimeE = this.timeAllE[1];
			},

			// 获取具体选中哪个 tag 1:开始时间 2:结束时间 
			// (判断开始时间 结束时间在整体提交的时候判断)
			selActive(e, tag) {
				let idx = e.detail.current,
					timeAllS = this.timeAllS,
					timeAllE = this.timeAllE;
				console.log('11111', e)
				if (tag == 1) { //开始时间 的前后时间值
					idx > 0 ? this.preTimeS = timeAllS[idx - 1] : this.preTimeS = '';
					timeAllS.length != idx + 1 ? this.nextTimeS = timeAllS[idx + 1] : this.nextTimeS = '';

				} else { //结束时间 的前后时间值
	
					idx > 0 ? this.preTimeE = timeAllE[idx - 1] : this.preTimeE = '';
					timeAllE.length != idx + 1 ? this.nextTimeE = timeAllE[idx + 1] : this.nextTimeE = '';

				}

				let pars = {
					tag: tag,
					idx: idx
				}
				this.$emit("selActive", pars)
			
			}
		}
	}
</script>

<style>
	.scroll-Y {
		height: 48rpx;
	}
</style>

调用组件

<swiperTime ref="swiperTime" :timeAllS='timeAllS' @selActive="selActive"></swiperTime>

<script>
	export default {
		data() {
			return {
				timeAllS: ['8:10', '8:20', '8:30', '8:40'], //时间数据
				starTime: '', //选中开始时间
				endTime: '', //选中结束时间}
			}
		},
		onLoad(options) {
			this.getTime();
		},
		methods: {
			// 获取一进入页面后选中的时间
			getTime() {
				let t = this.$refs.swiperTime.getimeChose();
				this.starTime = t.starTime;
				this.endTime = t.endTime;
			},
			
			// 获取选中的开始时间和结束时间
			selActive(e) {
				let idx = e.idx;
				e.tag == 1 ? this.starTime = this.timeAllS[idx] : this.endTime = this.timeAllS[idx + 1];
			},
			// 如果点击确认按钮
			zdBtn() {
				let starTime = this.starTime;
				let endTime = this.endTime;
				// 判断开始时间和结束时间
				if (starTime >= endTime) return this.$alert('开始时间不能大于结束时间!')
			}
			
		}
			
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: uniapp 的 drag-left-right 组件是一个滑动组件,允许用户通过左右滑动来切换内容。它是基于 uni-app 开发的跨平台应用开发框架,可以用于开发 iOS、Android、H5、小程序等多种平台的应用。 使用 drag-left-right 组件时,需要将需要切换的内容作为组件的子元素进行传递。通常情况下,这些内容是一系列的图片或者其他媒体元素。 例如,下面的代码展示了如何使用 drag-left-right 组件来展示一组图片: ``` <template> <view class="container"> <drag-left-right ref="dragLeftRight" :current="current" :auto-play="autoPlay" @change="onChange" > <view v-for="(item, index) in list" :key="index" class="item"> <image :src="item.src" class="image"></image> </view> </drag-left-right> </view> </template> <script> export default { data() { return { current: 0, autoPlay: true, list: [ { src: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/shuijiao.jpg' }, { src: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/muwu.jpg' }, { src: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/cbd.jpg' } ] } }, methods: { onChange(e) { console.log(e) } } } </script> ``` 在上面的代码中,我们通过 v-for 指令遍历了一个图片列表,并将每张图片作为 drag-left-right 组件的子元素进行渲染。在组件的属性中,我们通过 current 属性指定 ### 回答2: uniapp中的drag-left-right组件是一个用于实现左右滑动功能的组件。它可以让用户在移动设备上通过手指滑动的方式来操作页面内容。该组件通常用于实现类似轮播图、图片浏览等需要左右滑动的交互场景。 使用drag-left-right组件可以通过以下步骤实现左右滑动功能: 1. 在页面中引入drag-left-right组件,并传入需要滑动内容的数据。 2. 配置组件滑动方向,可以是向左滑动、向右滑动或双向滑动。 3. 可选的配置组件滑动速度和滑动阈值,以控制滑动的流畅度和触发条件。 4. 在组件中监听滑动事件,根据滑动距离和用户操作来实现相应的交互逻辑。 5. 可以通过配置组件的指示器或导航栏来显示当前滑动的位置和总页数等信息。 通过使用drag-left-right组件,可以方便地实现左右滑动的功能,提供了一种直观、灵活的交互方式。在uniapp中,drag-left-right组件的使用也非常简单,只需配置相关参数和监听相应事件即可实现所需的左右滑动效果。无论是实现图片浏览、轮播图还是其他需要左右滑动的场景,都能够通过drag-left-right组件轻松完成。 ### 回答3: uniapp中的drag-left-right组件是一种用于实现左右滑动功能的组件。它具有以下特点和用途。 该组件可以方便地将左右滑动的手势操作应用到页面上的元素上。通过监听用户的手势操作,可以实现左右滑动触发某个事件或动画效果的功能,非常适合用于实现滑动切换页面、滑动展示不同内容等交互效果。 使用drag-left-right组件可以很容易地实现左右滑动功能,只需在需要应用该功能的元素上添加drag-left-right组件,并设置对应的事件或动画效果即可,无需编写复杂的手势识别代码。 该组件支持设置滑动的最小距离和滑动速度阈值,可以根据实际需求来调整用户的滑动操作的灵敏度。 除了支持左右滑动功能,该组件还可以实现其他方向的滑动,如上下滑动。通过设置对应的参数,可以实现不同方向的滑动操作。 drag-left-right组件在uniapp中的使用非常简单,只需在页面的template中引入组件,并配置相应的属性和事件即可。 总的来说,uniapp的drag-left-right组件是一种方便实现左右滑动功能的组件,通过监听用户的手势操作,可以实现滑动触发事件或动画效果的交互效果,使页面更加丰富和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值