用ant-design-vue的日历Calendar组件来遍历数组到每个不同的日期格子上

我们看官方文档的Calendar组件是通过switch来将数据渲染到每日的格子上的,可是我却发现这个渲染会使得每个月的同一天都会出现这种情况,case:1则每个月的1日都会有数据渲染上去。

那么我就想通过导入一个数组就可以实现每日的格子数据渲染,那么我们就得了解Calendar渲染到每个日期格子的原理。

首先它是通过v-for遍历到每个日期格子的。

<li v-for="item in getListData(value)" :key="item.content">

如上,主要看getListData(value)实现效果渲染。那么我们就可以通过改变这个方法来完成我们想要的效果。

//数组格式如下所示,因此我们可以在数据库这样写入每日的内容,date对应那一天,listData对应具体内容,包含的type为内容提示,content为文字。
testList: [
        {
          date: "2020-12-01",
          listData: [
            { type: "warning", content: "This is warning event." },
            { type: "success", content: "This is usual event." },
            { type: "error", content: "This is error event." },
          ],
        },
        {
          date: "2020-12-05",
          listData: [{ type: "warning", content: "This is warning event." }],
        },
        {
          date: "2020-12-08",
          listData: [
            { type: "warning", content: "This is warning event." },
            { type: "error", content: "This is error event." },
          ],
        },
      ],


getListData(value) {
      let listData;
      //遍历数组
      this.testList.forEach(e => {
      //让数组的date与遍历到日历的那天的日期值相匹配
        if (e.date === value.format("YYYY-MM-DD")) {
          listData = e.listData;
        }
      });
      return listData || [];
    },

通过这个方法渲染出来的日历内容就不会像例子那样每月同一日重复了,而且直接导入一个数组即可。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值