FullCalendar timeGridWeek/timeGridDay视图不显示事件求助
解决FullCalendar 6.1.4 timeGridWeek/timeGridDay视图事件消失问题
以下是几个实用的排查和解决方向:
1. 校验事件时间格式
FullCalendar对时间格式要求严格,确保事件的start/end是ISO 8601格式字符串(如'2024-05-20T09:00:00')或合法的JavaScript Date对象。如果是自定义格式,必须转换后再传入:
// 正确示例:使用Date对象 events: [ { title: '会议', start: new Date('2024-05-20T09:00:00'), end: new Date('2024-05-20T10:30:00'), allDay: false } ]
2. 确认timeGridPlugin注册正确
初始化日历时,plugins数组必须同时包含dayGridPlugin和timeGridPlugin,缺一不可:
document.addEventListener('DOMContentLoaded', function() { const calendarEl = document.getElementById('calendar'); const calendar = new FullCalendar.Calendar(calendarEl, { plugins: ['dayGridPlugin', 'timeGridPlugin'], // 必须同时注册 initialView: 'dayGridMonth', // 可选:显式声明视图配置(如果自定义过) views: { timeGridWeek: { type: 'timeGrid', duration: { weeks: 1 } }, timeGridDay: { type: 'timeGrid', duration: { days: 1 } } }, events: [...] }); calendar.render(); });
3. 检查allDay属性设置
如果事件标记为allDay: true,但timeGrid视图的全天槽被关闭,事件会被隐藏。解决方式:
- 非全天事件务必设置
allDay: false - 或者在timeGrid视图中开启全天槽:
views: { timeGridWeek: { allDaySlot: true } }
4. 排查视图时间范围限制
如果给timeGrid视图设置了visibleRange,确认范围没有排除事件的时间:
// 错误示例:范围过窄导致事件不在视图内 views: { timeGridDay: { visibleRange: { start: '2024-05-20T12:00:00', end: '2024-05-20T18:00:00' } } }
若有此类配置,移除或调整为合理范围。
5. 检查CSS样式冲突
用浏览器开发者工具查看.fc-event元素,确认没有被自定义CSS设置display: none、opacity: 0或被其他元素遮挡。
6. 验证事件加载逻辑
如果事件是异步加载的,在datesSet回调中打印事件数据,确认切换视图时数据是否正常加载:
datesSet: function(info) { console.log('当前视图时间范围:', info.start, info.end); console.log('当前已加载事件:', calendar.getEvents()); }
内容的提问来源于stack exchange,提问作者amine
相关产品推荐
相关产品推荐

