如何从FullCalendar现有事件中检索并编辑RRule?
解决FullCalendar 5.10中无法访问重复事件rrule属性的问题
FullCalendar默认不会把你传入的rrule原始对象直接绑定到event实例上,想要获取重复规则的dtstart、freq等属性,得借助fullcalendar-to-rrule插件提供的getRRule方法来提取。
具体实现步骤
确保插件正确引入/导入
- 用CDN引入时,要保证
fullcalendar-rrule.js在FullCalendar核心脚本之后加载; - 用npm模块化开发时,正确导入
getRRule方法:import { getRRule } from '@fullcalendar/rrule';
- 用CDN引入时,要保证
在eventClick回调中获取rrule实例
修改你的showDateModal函数,加入rrule的提取逻辑:function showDateModal(info = null){ var myModal = new bootstrap.Modal(document.getElementById('createEventModal')); if(info != null) { document.getElementById('event-title').value = info.event.title; // 提取rrule实例 const rruleInstance = getRRule(info.event); if(rruleInstance) { // 从options中获取需要的属性 const rrulestart = rruleInstance.options.dtstart; const freq = rruleInstance.options.freq; // 可将值填充到模态框对应输入框 // 示例:document.getElementById('event-start').value = rrulestart.toISOString().slice(0,10); console.log('重复起始时间:', rrulestart); console.log('重复频率:', freq); } } }
注意事项
- 只有添加时传入rrule属性的重复事件才能通过
getRRule拿到实例,普通事件调用会返回null,务必加判断; - 创建事件时要保证rrule格式正确:
dtstart必须是标准Date对象,freq建议使用rrule提供的常量(比如RRule.DAILY、RRule.WEEKLY),避免直接传数字导致后续处理混乱; - 确认fullcalendar-to-rrule插件版本与FullCalendar 5.10兼容,版本不匹配可能出现方法无法调用的问题。
内容的提问来源于stack exchange,提问作者S. B.
相关产品推荐
相关产品推荐

