vue下使用fullcalendar案例讲解

 更新时间:2024年01月17日 11:32:10   作者:林深时见鹿7  
这篇文章主要介绍了vue下使用fullcalendar及简单案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

ps:我真的感觉自己是个前端了,最近天天在写前端。不过很多复杂逻辑,后台处理起来比较麻烦,所以只让后台提供简单数据,前端封装处理数据确实比较方便!
引子:最近公司要做个人日程管理,故鄙人思前想后,选择了fullcalendar组件。但!官方文档全是英文,对于英语四级都没过的我,真是很心累。只能发扬面向百度编程的优良传统,找了好多案例做出来了。现总结如下:

vue下使用fullcalendar及简单案例

  • 使用版本:5.3.0
  • 效果图

安装

在package.json中引入如下,运行“npm i”

    "@fullcalendar/daygrid": "^5.3.0",
    "@fullcalendar/interaction": "^5.3.0",
    "@fullcalendar/list": "^5.3.0",
    "@fullcalendar/timegrid": "^5.3.0",
    "@fullcalendar/vue": "^5.3.0",

或者直接 “npm install -save *****”
运行报错,多半是因为乱七八糟的依赖版本冲突,要更换依赖版本。对了!安装前请把npm改成阿里云依赖下载,否则卡死。
安装成功的话,在package-lock.json中会有一条记录:

无需再main.js中引入

使用

基本使用

创建vue文件,在script中引入fullcalendar(哪个页面用哪里引)

<template>
   <FullCalendar ref="fullCalendar"></FullCalendar>
</template>
<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import listPlugin from '@fullcalendar/list'
export default {
  //import引入的组件需要注入到对象中才能使用
  components: { FullCalendar }  
}
</script>

此时可以显示一个简单的日历了,但远远不是我们想要的。

注入事件和属性

代码:

<template>
   <FullCalendar ref="fullCalendar" :options="calendarOptions"></FullCalendar>
</template>
<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import listPlugin from '@fullcalendar/list'
export default {
  //import引入的组件需要注入到对象中才能使用
  components: { FullCalendar }  
  data() {
    return {
      calendarOptions: {
        plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin, listPlugin],
        initialView: 'dayGridMonth',
        locale: 'zh',
        firstDay: 1,
        buttonText: {
          today: '今天',
          month: '月',
          week: '周',
          day: '日',
          list: '周列表',
        },
        headerToolbar: {
          left: 'prev,next today',
          center: 'title',
          right: 'dayGridMonth,timeGridWeek,timeGridDay listWeek',
        },
        height: 650,
        validRange: this.validRange,  //设置可显示的总日期范围
        events: [], //背景色 (添加相同时间的背景色时颜色会重叠) 
        datesSet: this.datesSet, //日期渲染;修改日期范围后触发
        eventClick: this.handleEventClick, //点击日程触发
        dateClick: this.handleDateClick, //点击日期触发
        eventDrop: this.calendarEventDropOrResize, //拖动事件触发
        eventResize: this.calendarEventDropOrResize, //缩放事件触发
        displayEventTime: false, //不显示具体时间
      },
      validRange: {
        start: '2021-09-01',
        end: moment().add(6, 'months').format('YYYY-MM-DD'),
      }
    }
  },
   methods: {
    datesSet(info) {   //注意:该方法在页面初始化时就会触发一次
        console.log(info)
        // this.search()  //请求本页数据
        //虚拟数据
        this.calendarOptions.events = [{
              id: 111,
              title: '任务1',
              start: ‘2021-10-01',
              end: ‘2021-10-11'
              color: ‘#ffcc99',
              editable: true, //允许拖动缩放,不写默认就是false
              overlap: true, //允许时间重叠,即可以与其他事件并存,不写默认就是false
          },{
			id: 222,
              title: '任务2',
              start: ‘2021-10-12',
              end: ‘2021-10-20'
              color: ‘#ffcc99',
              editable: true, //允许拖动缩放
		}] 
      },
    handleEventClick(info) {},
    handleDateClick(info){},
    calendarEventDropOrResize(info){}
  }
}
</script>

参数说明:

  • plugins::绑定的控件
  • initialView:‘dayGridMonth’ 默认显示视图,月视图
  • locale:‘zh’ 国际化,中文
  • firstDay:1 星期的第一列显示,周一(0周日 1周一 2周二…)
  • buttonText:buttonText 按钮文本
  • headerToolbar:header 头部工具条

  • height:日历高度
  • validRange:validRange 全局日期范围;超出范围按钮会禁用
  • 数据来源:
  • events: [] 日程数据存放在这里,使用this.calendarOptions.events调用

事件说明:

datesSet:修改日期范围后触发,即点击

这三个按钮时触发eventClick:点击任务时触发dateClick: 点击日期触发eventDrop: 拖动事件触发eventResize: 缩放事件触发

  • datesSet:修改日期范围后触发,即点击

    这三个按钮时触发
  • eventClick:点击任务时触发
  • dateClick: 点击日期触发
  • eventDrop: 拖动事件触发
  • eventResize: 缩放事件触发

到此这篇关于vue下使用fullcalendar及简单案例的文章就介绍到这了,更多相关vue使用fullcalendar内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • HBuilder导入vue项目并通过域名访问的过程详解

    HBuilder导入vue项目并通过域名访问的过程详解

    这篇文章主要介绍了HBuilder导入vue项目并通过域名访问,一般情况下运行vue项目需要安装node.js,通过npm命令来安装vue组件和运行vue项目,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 在vue中使用jsx语法的使用方法

    在vue中使用jsx语法的使用方法

    这篇文章主要介绍了在vue中使用jsx语法的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • vue中的公共方法调用方式

    vue中的公共方法调用方式

    这篇文章主要介绍了vue中的公共方法调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue在mounted中window.onresize不生效问题及解决

    vue在mounted中window.onresize不生效问题及解决

    这篇文章主要介绍了vue中在mounted中window.onresize不生效问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 老生常谈vue的生命周期

    老生常谈vue的生命周期

    这篇文章主要为大家详细介绍了vue的生命周期,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Vue具名插槽+作用域插槽的混合使用方法

    Vue具名插槽+作用域插槽的混合使用方法

    这篇文章主要介绍了Vue具名插槽+作用域插槽的混合使用,这里只简单的介绍 具名插槽+作用域插槽 混合在一起使用的方法,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Vue 2.X的状态管理vuex记录详解

    Vue 2.X的状态管理vuex记录详解

    这篇文章主要介绍了Vue 2.X的状态管理vuex记录的相关资料,文中介绍的非常详细,对大家的理解和学习具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • proxy实现vue3数据双向绑定原理

    proxy实现vue3数据双向绑定原理

    这篇文章主要介绍了proxy实现vue3数据双向绑定原理,文章以介绍proxy的优点开始展开全文内容,围绕proxy实现vue3数据双向绑定的相关资料,,需要的朋友可以参考一下
    2021-12-12
  • 浅析Vue中Virtual DOM和Diff原理及实现

    浅析Vue中Virtual DOM和Diff原理及实现

    这篇文章主要为大家详细介绍了Vue中Virtual DOM和Diff原理及实现的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-03-03
  • 如何使用el-table+el-tree+el-select动态选择对应值

    如何使用el-table+el-tree+el-select动态选择对应值

    小编在做需求时,遇到了在el-table表格中加入多条数据,并且每条数据要通过el-select来选取相应的值,做到动态选择,下面这篇文章主要给大家介绍了关于如何使用el-table+el-tree+el-select动态选择对应值的相关资料,需要的朋友可以参考下
    2023-01-01

最新评论