文章目录
调用组件设置可选日期
我在做日历功能的时候遇到一个需求,就是后端返回一个时间列表,在日历组件中,只能选择后端返回的日期列表时间,其它时间都不能被选中,查看了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属性,只要改变这个属性就可以选中,不选中了,如果要指定时间不被选中,也是一样的操作。