Element Plus日历组件怎么自定义日期单元格内容?

金壵(打工版) 阅读 59

我在用Element Plus的Calendar组件,想在每个日期格子里显示自定义内容,比如当天的待办数量。官方文档说可以用scoped slot,但我试了date-cell好像没生效?

我这样写的:

<el-calendar>
  <template #date-cell="{ date }">
    <div>{{ date.getDate() }}</div>
    <div>3</div>
  </template>
</el-calendar>

结果整个日历直接空白了,控制台也没报错,是不是slot名字写错了?还是得配合其他属性用?

我来解答 赞 7 收藏
二维码
手机扫码查看
1 条解答
UX-巧梅
UX-巧梅 Lv1
你的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去查:





这样就能在对应的日期格子里显示待办数量了。
点赞
2026-03-18 09:17