You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:35:21