Element Plus日历组件怎么自定义日期单元格内容?
我在用Element Plus的Calendar组件,想在每个日期格子里显示自定义内容,比如当天的待办数量。官方文档说可以用scoped slot,但我试了date-cell好像没生效?
我这样写的:
<el-calendar>
<template #date-cell="{ date }">
<div>{{ date.getDate() }}</div>
<div>3</div>
</template>
</el-calendar>
结果整个日历直接空白了,控制台也没报错,是不是slot名字写错了?还是得配合其他属性用?
Element Plus的Calendar组件date-cell这个scoped slot,接收的参数不是
date,而是data。这个data对象里包含的是day属性,是一个字符串,格式类似"2023-01-15"这种,而不是Date对象。所以你的代码应该改成这样:
这里
data.day是字符串"2023-01-15"这种格式,你想取日期数字的话需要自己分割一下。如果你想保持用Date对象的方式(方便做更多日期操作),可以自己在template里转换:
至于为什么日历会空白...这个锅其实是Vue的slot参数不匹配导致的,Vue在找不到对应slot或者参数结构不对的情况下,有时候确实会直接静默失败,不会报错。
如果你还想显示待办数量这种动态数据,可以把数据处理成map的形式,然后用data.day当key去查:
这样就能在对应的日期格子里显示待办数量了。