vue下使用fullcalendar案例講解
ps:我真的感覺自己是個(gè)前端了,最近天天在寫前端。不過很多復(fù)雜邏輯,后臺(tái)處理起來比較麻煩,所以只讓后臺(tái)提供簡單數(shù)據(jù),前端封裝處理數(shù)據(jù)確實(shí)比較方便!
引子:最近公司要做個(gè)人日程管理,故鄙人思前想后,選擇了fullcalendar組件。但!官方文檔全是英文,對(duì)于英語四級(jí)都沒過的我,真是很心累。只能發(fā)揚(yáng)面向百度編程的優(yōu)良傳統(tǒng),找了好多案例做出來了?,F(xiàn)總結(jié)如下:
vue下使用fullcalendar及簡單案例
- 使用版本:5.3.0
- 效果圖

安裝
在package.json中引入如下,運(yùn)行“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 *****”
運(yùn)行報(bào)錯(cuò),多半是因?yàn)閬y七八糟的依賴版本沖突,要更換依賴版本。對(duì)了!安裝前請(qǐng)把npm改成阿里云依賴下載,否則卡死。
安裝成功的話,在package-lock.json中會(huì)有一條記錄:

無需再main.js中引入
使用
基本使用
創(chuàng)建vue文件,在script中引入fullcalendar(哪個(gè)頁面用哪里引)
<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引入的組件需要注入到對(duì)象中才能使用
components: { FullCalendar }
}
</script>此時(shí)可以顯示一個(gè)簡單的日歷了,但遠(yuǎn)遠(yuǎn)不是我們想要的。
注入事件和屬性
代碼:
<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引入的組件需要注入到對(duì)象中才能使用
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, //設(shè)置可顯示的總?cè)掌诜秶?
events: [], //背景色 (添加相同時(shí)間的背景色時(shí)顏色會(huì)重疊)
datesSet: this.datesSet, //日期渲染;修改日期范圍后觸發(fā)
eventClick: this.handleEventClick, //點(diǎn)擊日程觸發(fā)
dateClick: this.handleDateClick, //點(diǎn)擊日期觸發(fā)
eventDrop: this.calendarEventDropOrResize, //拖動(dòng)事件觸發(fā)
eventResize: this.calendarEventDropOrResize, //縮放事件觸發(fā)
displayEventTime: false, //不顯示具體時(shí)間
},
validRange: {
start: '2021-09-01',
end: moment().add(6, 'months').format('YYYY-MM-DD'),
}
}
},
methods: {
datesSet(info) { //注意:該方法在頁面初始化時(shí)就會(huì)觸發(fā)一次
console.log(info)
// this.search() //請(qǐng)求本頁數(shù)據(jù)
//虛擬數(shù)據(jù)
this.calendarOptions.events = [{
id: 111,
title: '任務(wù)1',
start: ‘2021-10-01',
end: ‘2021-10-11'
color: ‘#ffcc99',
editable: true, //允許拖動(dòng)縮放,不寫默認(rèn)就是false
overlap: true, //允許時(shí)間重疊,即可以與其他事件并存,不寫默認(rèn)就是false
},{
id: 222,
title: '任務(wù)2',
start: ‘2021-10-12',
end: ‘2021-10-20'
color: ‘#ffcc99',
editable: true, //允許拖動(dòng)縮放
}]
},
handleEventClick(info) {},
handleDateClick(info){},
calendarEventDropOrResize(info){}
}
}
</script>參數(shù)說明:
- plugins::綁定的控件
- initialView:‘dayGridMonth’ 默認(rèn)顯示視圖,月視圖
- locale:‘zh’ 國際化,中文
- firstDay:1 星期的第一列顯示,周一(0周日 1周一 2周二…)
- buttonText:buttonText 按鈕文本
- headerToolbar:header 頭部工具條

- height:日歷高度
- validRange:validRange 全局日期范圍;超出范圍按鈕會(huì)禁用
- 數(shù)據(jù)來源:
- events: [] 日程數(shù)據(jù)存放在這里,使用this.calendarOptions.events調(diào)用
事件說明:
datesSet:修改日期范圍后觸發(fā),即點(diǎn)擊
這三個(gè)按鈕時(shí)觸發(fā)eventClick:點(diǎn)擊任務(wù)時(shí)觸發(fā)dateClick: 點(diǎn)擊日期觸發(fā)eventDrop: 拖動(dòng)事件觸發(fā)eventResize: 縮放事件觸發(fā)
- datesSet:修改日期范圍后觸發(fā),即點(diǎn)擊
這三個(gè)按鈕時(shí)觸發(fā)
- eventClick:點(diǎn)擊任務(wù)時(shí)觸發(fā)
- dateClick: 點(diǎn)擊日期觸發(fā)
- eventDrop: 拖動(dòng)事件觸發(fā)
- eventResize: 縮放事件觸發(fā)
到此這篇關(guān)于vue下使用fullcalendar及簡單案例的文章就介紹到這了,更多相關(guān)vue使用fullcalendar內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HBuilder導(dǎo)入vue項(xiàng)目并通過域名訪問的過程詳解
這篇文章主要介紹了HBuilder導(dǎo)入vue項(xiàng)目并通過域名訪問,一般情況下運(yùn)行vue項(xiàng)目需要安裝node.js,通過npm命令來安裝vue組件和運(yùn)行vue項(xiàng)目,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
vue在mounted中window.onresize不生效問題及解決
這篇文章主要介紹了vue中在mounted中window.onresize不生效問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
proxy實(shí)現(xiàn)vue3數(shù)據(jù)雙向綁定原理
這篇文章主要介紹了proxy實(shí)現(xiàn)vue3數(shù)據(jù)雙向綁定原理,文章以介紹proxy的優(yōu)點(diǎn)開始展開全文內(nèi)容,圍繞proxy實(shí)現(xiàn)vue3數(shù)據(jù)雙向綁定的相關(guān)資料,,需要的朋友可以參考一下2021-12-12
淺析Vue中Virtual?DOM和Diff原理及實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Vue中Virtual?DOM和Diff原理及實(shí)現(xiàn)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03
如何使用el-table+el-tree+el-select動(dòng)態(tài)選擇對(duì)應(yīng)值
小編在做需求時(shí),遇到了在el-table表格中加入多條數(shù)據(jù),并且每條數(shù)據(jù)要通過el-select來選取相應(yīng)的值,做到動(dòng)態(tài)選擇,下面這篇文章主要給大家介紹了關(guān)于如何使用el-table+el-tree+el-select動(dòng)態(tài)選擇對(duì)應(yīng)值的相關(guān)資料,需要的朋友可以參考下2023-01-01

