使用fullcalendar 5.0
,我试图为已删除的外部事件添加一个唯一ID,但无法使其工作。我似乎应该使用event.setProp
,我可以看到它正在修改event._def
,但它似乎没有反映在公共属性中。
我在新的Calendar对象中有这些事件处理程序:
...,
eventReceive: function(info){
console.log('In eventReceive')
console.log('id = ' + info.event.id + '; _def.id = ' + info.event._def.id)
info.event.setProp('id', 'myshinyid')
console.log('Back in eventReceive')
console.log('id = ' + info.event.id + '; _def.id = ' + info.event._def.id)
},
eventAdd: function(info){
},
eventChange: function(info){
console.log('In eventChange')
console.log('id = ' + info.event.id + '; _def.id = ' + info.event._def.id)
},
此处的工作示例
这创建了我所期望的序列:eventReceive
触发,setProp
关闭eventChange
,然后返回eventReceive
。我可以看到_def
被修改了,但它没有暴露出来。
In eventReceive
1:106 id = ; _def.id = undefined
1:114 In eventChange
1:115 id = ; _def.id = myshinyid
1:108 Back in eventReceive
1:109 id = ; _def.id = myshinyid
我错过了什么?
很抱歉回复太晚,但我刚刚检查了相同的问题,并找到了解决方案。
在您的Dragable元素中,您需要添加eventData选项,您可以在那里设置您的id=>
new FullCalendar.Draggable(containerEl, {
itemSelector: '.fc-event', // Change with the identifier of your external events
eventData: function(eventEl) {
const event = JSON.parse(eventEl.getAttribute('data-event')); // I have all my event info in a stringify json object on each elements
event.id = generateUUID(); // Here you can add your id
return event; // Your id will be saved
}
});