自定义组件,使得element-ui组件Calendar仅渲染当月

使用方法
1.复制 cm-calendar 文件夹及内容到自己项目中
2.在要使用的页面上引入组件(路径根据自己情况修改):
在这里插入图片描路径述

3.在 页面的 components 中注册组件:
在这里插入图片描述
4.与 el-calendar 的使用方法完全相同,只是把组件名换成 CMCalendar
在这里插入图片描述
闭坑
不同element-ui的版本如果引入后无效,解决方法是:检查一下下面的文件
在这里插入图片描述
在部分elementui的版本中,这个文件名字叫:data-table.vue,这时候需要修改一下cm-datatable.vue的第3行。

-----------------------cm-datatable.vue----------------

<script>
import DateTable from 'element-ui/packages/calendar/src/dataTable.vue';
import { range as rangeArr } from 'element-ui/src/utils/date-util';
export default {
  extends: DateTable,
  methods: {
    toNestedArr(days) {
      let nextDays = days.filter(d => d.type=='next').length;
      if (nextDays >= 7) {
        days = days.slice(0, days.length - 7);
      }
      return rangeArr(days.length / 7).map((_, index) => {
        const start = index * 7;
        return days.slice(start, start + 7);
      });
    },
    cellRenderProxy({ text, type }) {
      if (type != 'current') {
          return <span></span>
      }
      let render = this.elCalendar.$scopedSlots.dateCell;
      if (!render) return <span>{ text }</span>;
      const day = this.getFormateDate(text, type);
      const date = new Date(day);
      const data = {
        isSelected: this.selectedDay === day,
        type: `${type}-month`,
        day
      };
      return render({ date, data });
    },
    pickDay({ text, type }) {
      const date = this.getFormateDate(text, type);
      if (type && type==='current') {
        this.$emit('pick', date);
      }
    },
  }
};
</script>
<style scoped>
.next .el-calendar-day:hover, .prev .el-calendar-day:hover {
    background-color:transparent;
    cursor: auto;
}
</style>

--------------------index.vue---------------

<script>
import { Calendar } from 'element-ui'
import DateTable from './cm-datatable';
export default {
  extends: Calendar,
  name: 'CMCalendar',
  components: {
    DateTable
  }
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值