uview Calendar 日历组件中,自定义日期时间可被选中,其他时间不能选中

文章讲述了在开发中遇到的日历组件只能选择特定日期的需求,通过修改uview日历组件的源码,特别是setMonth()方法,添加对customList参数的处理,使组件根据后端返回的时间列表禁用其他日期。通过设置date的disabled属性实现日期的可选性。
摘要由CSDN通过智能技术生成

调用组件设置可选日期

我在做日历功能的时候遇到一个需求,就是后端返回一个时间列表,在日历组件中,只能选择后端返回的日期列表时间,其它时间都不能被选中,查看了uview日历组件的文档,并没有发现相应的方法或属性,所以我选择修改下源码来解决,修改其实也挺简单的。
首先,我们在页面中设置可选时间,传递给组件内:

<u-calendar :show="calendar_show" 
			:monthNum="12"
			:customList="customList">
</u-calendar>

customList就是后端返回时间数据列表,格式是这样的:
在这里插入图片描述
而customList在官方文档中正好有这个参数,叫自定义列表,但是我也不知道他是用来干嘛的,源码中也并没有任何使用,我就用它去传递时间参数了。

修改源码

找到uview日历组件文件u-calendar.vue,然后找到setMonth()方法,修改它循环里面的日期date中的disabled属性,disabled为true就不能选中了,我是这么写的:

disabled:
		dayjs(date).isBefore(
			dayjs(minDate).format('YYYY-MM-DD')
		) ||
		dayjs(date).isAfter(
			dayjs(maxDate).format('YYYY-MM-DD')
		) ||
		this.customList.indexOf(date) === -1,

this.customList.indexOf(date) === -1就是我写的了,只要不在时间列表数组里的,就是flase,也就不能选中啦。

小结

其实不能选中就是其中date的disabled属性,只要改变这个属性就可以选中,不选中了,如果要指定时间不被选中,也是一样的操作。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值