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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue如何监听浏览器主动刷新

    vue如何监听浏览器主动刷新

    这篇文章主要介绍了vue如何监听浏览器主动刷新,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue3中的ref与reactive使用方法对比

    vue3中的ref与reactive使用方法对比

    Vue3 提供了两个新的 API:ref 和 reactive,它们可以帮助我们更好地管理和处理响应式数据,这篇文章主要介绍了vue3中的ref与reactive的区别和使用方法,需要的朋友可以参考下
    2023-04-04
  • 详解Vue3中Watch监听事件的使用

    详解Vue3中Watch监听事件的使用

    这篇文章主要为大家详细介绍了Vue3中Watch监听事件的使用的相关资料,文中的示例代码讲解详细,对我们学习Vue3有一定的帮助,需要的可以参考一下
    2023-02-02
  • Vue中的路由配置项meta使用解析

    Vue中的路由配置项meta使用解析

    这篇文章主要介绍了Vue中的路由配置项meta使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 快速搭建vue2.0+boostrap项目的方法

    快速搭建vue2.0+boostrap项目的方法

    这篇文章主要介绍了快速搭建vue2.0+boostrap项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 安装@vue/cli报错npmERR gyp ERR问题及解决

    安装@vue/cli报错npmERR gyp ERR问题及解决

    这篇文章主要介绍了安装@vue/cli报错npmERR gyp ERR问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue中控制mock在开发环境使用,在生产环境禁用方式

    vue中控制mock在开发环境使用,在生产环境禁用方式

    这篇文章主要介绍了vue中控制mock在开发环境使用,在生产环境禁用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 使用vue构建一个上传图片表单

    使用vue构建一个上传图片表单

    这篇文章主要为大家详细介绍了使用vue构建一个上传图片表单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • vue自动化路由的实现代码

    vue自动化路由的实现代码

    这篇文章主要介绍了vue自动化路由的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Vue组件之间四种通信方式详解

    Vue组件之间四种通信方式详解

    vue框架提供了前端开发组件的思想,可以通过组件来组合成一个完整的页面,都是随着组件数量原来越多,组件之间难免需要相互通信。本文将为大家介绍四种组件间的通信方式,需要的可以参考一下
    2022-01-01

最新评论