el-calendar日历自定义显示内容

版本信息:

 之前我整理了一篇VUE+Element-ui实战之el-calendar日历自定义显示内容

有码友在评论区里分享了更简介的方式,看到后一直想尝试一下,所以本篇就是来 填坑

 按照提供的思路我尝试了一下,现将全部代码贴出来,以供大家交流

<template>
    <!--日历自定义显示内容-->
    <div class="main_con">
        <div style="text-align: left;">
            <H2>施工日志</H2>
            <el-divider></el-divider>
        </div>

        <el-calendar>
            <template slot="dateCell" slot-scope="{date, data}">
                {{ data.day.split('-').slice(1).join('-') }}
                <el-tag type="danger" v-if="scheduleData[data.day]">
                    {{scheduleData[data.day].content}}
                </el-tag>
                <!-- </div> -->
            </template>
        </el-calendar>
    </div>
</template>
 
<script>
export default {
    name: "PatrolSchedule",
    components: {},
    data() {
        return {
            scheduleData: {
                "2022-08-01": { content: "土方开挖" },
                "2022-08-08": { content: "地基验坑" },
                "2022-08-11": { content: "地基回填" },
                "2022-08-22": { content: "基础垫层膜" },
                "2022-08-26": { content: "基础垫层混凝土浇筑" },
                "2022-08-30": { content: "基础钢筋绑扎" },
            },
        };
    },
    mounted() {},
    methods: {},
};
</script>
<style scoped>
/deep/.el-calendar-day {
    box-sizing: border-box;
    padding: 5px;
    height: 80px;
}
</style>

页面显示效果如下

 

注:相比于之前的方案,少了日期的判断,直接显示数据内容

看到上边的评论里还提到“content一直未定义”,是因为日期显示时,数据里并不是每天的content都有值,所以为了避免出现这个错误,我这边加了v-if="scheduleData[data.day]"的判断。

el-calendar 是一个基于 Vue.js 的日历组件,它提供了丰富的配置选项,可以轻松地实现自定义日辰。以下是一些实现自定义日辰的方法: 1. 通过设置 slot el-calendar 组件为每个日期单元格提供了一个 slot,可以通过设置 slot 来自定义单元格的内容。下面是一个示例代码: ```html <el-calendar :range-start="start" :range-end="end" :first-day-of-week="1" @change="handleChange"> <template #date="{ date }"> <div class="custom-cell"> <span class="date">{{ date.date }}</span> <span class="solar-term">{{ date.solarTerm | default '无' }}</span> </div> </template> </el-calendar> ``` 在上面的代码中,我们通过设置名为 date 的 slot 来自定义日期单元格,其中 date 是一个对象,包含日期信息和农历信息。在 slot 内部,我们可以使用这些信息来渲染自定义内容。 2. 通过设置 dateCellRender 属性 el-calendar 组件还提供了一个 dateCellRender 属性,可以用于自定义日期单元格的渲染函数。下面是一个示例代码: ```html <el-calendar :range-start="start" :range-end="end" :first-day-of-week="1" :date-cell-render="renderCell" @change="handleChange"></el-calendar> ``` 在上面的代码中,我们将 dateCellRender 属性设置为一个函数 renderCell,该函数接受一个参数 date,表示当前日期的信息。在函数内部,我们可以根据需要渲染自定义内容,并返回一个 Vue 组件或者 HTML 字符串。 ```js methods: { renderCell(date) { return { template: ` <div class="custom-cell"> <span class="date">{{ date.date }}</span> <span class="solar-term">{{ date.solarTerm | default '无' }}</span> </div> ` }; }, //... } ``` 在上面的代码中,我们返回了一个包含自定义 HTML 的 Vue 组件,这个组件将会被渲染到日期单元格中。在组件内部,我们可以使用 date 参数来访问日期信息和农历信息。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛七分

随多随少随你心意^-^

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值