FullCalendar v3升级v6:获取视图view及月起始值问题求助
FullCalendar v6 视图获取及月份起始值获取解决方案
问题背景
基于FullCalendar v3定制的项目升级到v6时,原v3中通过$('#calendar').fullCalendar('getView')获取日历视图、view.intervalStart._d获取月份起始值的方式失效——v4起getView方法被废弃,官方要求改用Calendar实例的view属性,但尝试var view = calendar.view和var view = $('#calendar').view均未成功。
正确实现方式
1. 确保Calendar实例正确初始化
v6不再依赖jQuery的链式调用,需先创建Calendar实例:
// 初始化日历(全局作用域下定义,确保后续函数可访问) const calendarEl = document.getElementById('calendar'); const calendar = new FullCalendar.Calendar(calendarEl, { initialView: 'dayGridMonth', // 其他配置项 }); calendar.render();
2. 在导出函数中获取视图与月份起始值
通过已创建的Calendar实例直接访问view属性,使用currentStart替代旧版的intervalStart,无需访问_d(v6的日期对象可直接调用原生Date方法):
function exportTableToExcel() { // 获取视图对象 const view = calendar.view; // 获取视图起始日期 const start = view.currentStart; // 获取月份(0代表1月,11代表12月) const monthS = start.getMonth(); // 你的导出逻辑代码 }
3. 解决作用域问题(如果calendar不是全局变量)
若calendar是局部变量无法在导出函数中访问,可通过DOM元素获取实例:
function exportTableToExcel() { const calendarEl = document.getElementById('calendar'); const calendar = FullCalendar.Calendar.getApi(calendarEl); const view = calendar.view; const start = view.currentStart; const monthS = start.getMonth(); // 你的导出逻辑代码 }
新旧代码对比
- 旧v3代码:
var view = $('#calendar').fullCalendar('getView'); var start = view.intervalStart._d; var monthS = start.getMonth();
- 新v6代码:
const calendar = FullCalendar.Calendar.getApi(document.getElementById('calendar')); const view = calendar.view; const start = view.currentStart; const monthS = start.getMonth();
内容的提问来源于stack exchange,提问作者tato
相关产品推荐
相关产品推荐

