element-ui中el-calendar 日历怎么根据后端返回的一组日期,动态控制单个日期的样式(比如除了返回的日期,其他日期右上角加上红色的标志),代码具体如何实现
时间: 2024-05-11 13:17:45 浏览: 136
可以使用 el-calendar 组件的 date-cell-render 属性来动态渲染单元格,根据后端返回的一组日期,判断是否为返回的日期,如果是则设置对应日期的样式,否则在右上角加上红色标志。
具体代码实现如下:
1. 在 el-calendar 组件上添加 date-cell-render 属性:
```
<el-calendar
v-model="date"
:date-cell-render="dateCellRender"
></el-calendar>
```
2. 在 methods 中定义 dateCellRender 方法:
```
methods: {
dateCellRender(h, { date, disabled }) {
const currentYear = this.date.getFullYear()
const currentMonth = this.date.getMonth() + 1
const currentDate = this.date.getDate()
const targetDate = `${currentYear}-${currentMonth}-${currentDate}`
const markedDates = ['2021-07-19', '2021-07-20', '2021-07-21'] // 后端返回的一组日期
const isMarked = markedDates.includes(targetDate)
if (disabled) {
return <div class="disabled-date">{date.getDate()}</div>
} else {
return (
<div class={['date-cell', isMarked && 'marked-date']}>
{date.getDate()}
{!isMarked && <div class="red-mark"></div>}
</div>
)
}
}
}
```
3. 在样式中定义对应样式:
```
.date-cell {
position: relative;
}
.marked-date {
font-weight: bold;
color: #42b983;
}
.red-mark {
position: absolute;
top: 0;
right: 0;
width: 6px;
height: 6px;
border-radius: 50%;
background-color: red;
}
```
这样就可以根据后端返回的一组日期,动态控制单个日期的样式了。
阅读全文