FullCalendar.getEvents()无法返回当前视图外重复事件问题咨询
关于FullCalendar getEvents()方法无法返回视图外重复事件的问题
问题现象
根据FullCalendar官方文档,getEvents()方法应返回“内存中的所有事件”,但实际测试发现:
- 当前视图范围外的重复事件无法被返回,无论重复事件是通过
calendar.addEvent()动态添加,还是通过events/initialEvents选项加载 - 该现象在
timeGrid、dayGrid、dayGridMonth等各类视图中均存在 - 当前视图外的普通事件可正常返回
影响版本
该问题至少在FullCalendar 5.10.1和6.1.6版本中存在
复现代码
JavaScript代码
var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { initialView: 'dayGridMonth', initialDate: '2023-01-01' }); calendar.render(); console.log('Current View: ' + calendar.view.title) console.log('Adding normal event') calendar.addEvent({ title: 'Normal Event', start: '2023-04-03T17:00:00', end: '2023-04-07T17:30:00' }) console.log(`Found: ${calendar.getEvents().length}, 1 expected`) console.log('Adding recurring event') calendar.addEvent({ title: 'Recurring Event', startTime: '17:00:00', endTime: '17:30:00', startRecur: '2023-06-07', endRecur: '2023-06-22', daysOfWeek: [3] // Wed }); // Recurring events are expanded, so we expect 4, not 2. I can filter individual events based on the `defId`... // ... if only I could get them console.log(`Found: ${calendar.getEvents().length}, 4 expected!`) calendar.gotoDate('2023-06-01') console.log('Current View: ' + calendar.view.title) console.log(`Found: ${calendar.getEvents().length}, 4 expected`)
HTML代码
<script src="https://cdn.jsdelivr.net/npm/@fullcalendar/core@6.1.6/index.global.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@fullcalendar/daygrid@6.1.6/index.global.min.js"></script> <div id="calendar"></div>
复现逻辑
- 日历初始化为2023年1月视图
- 添加不在当前视图的5月普通事件和6月重复事件
- 调用
getEvents()仅能获取到普通事件 - 切换到6月视图后,才能获取到全部4个重复事件实例
疑问
- 该行为是否有官方文档说明,或是否属于bug?
- 是否有官方API可获取所有事件(优先获取事件定义
defs而非实例instances,若无法实现也可接受),而非通过操作eventStore这种复杂方式?
内容的提问来源于stack exchange,提问作者msg
相关产品推荐
相关产品推荐

