我使用的是旧版本的fullCalendar(1.6.4),大部分成功。我有一个能够将新事件添加到日历中的UI,然后内联编辑它们。当我尝试使用修改后的事件对象更新日历时,我遇到了问题。我只是遇到了这个问题,但是通过动态添加的事件,我显然可以重新加载页面并更新fullCalendar最初添加的事件。
问题似乎与 event.source 属性的工作方式有很大关系。当事件上的属性为null时,fullCalendar会将事件的新实例推送到“缓存”对象,即使事件已存在于日历上也是如此。我不确定为什么或如何运作。无论出于何种原因,我最终会在日历日结束重复的事件实例。
// code directly from fullCalendar 1.6.4
function renderEvent(event, stick) {
console.log('renderEvent',event)
normalizeEvent(event);
if (!event.source) {
if (stick) {
stickySource.events.push(event);
event.source = stickySource;
}
cache.push(event);
}
reportEvents(cache);
}
因此,在对现有日历项进行纯编辑的情况下,我确保设置源值,而不是在任何地方丢失/为空。即使最坏的情况,它会执行以下操作并将其设置为空对象。 (注意,这可能是我的问题的原因,我只是对完整的日历不够了解)。有时我甚至不得不强制它为{},否则它在源代码中有多个项目,并且我在更新后再次以重复的日历条目结束。
calEvent.source = calEvent.source ? calEvent.source : {};
然后我通过调用renderEvent来更新我现有的日历。
$('#calendar').fullCalendar( 'renderEvent', calEvent, true);
不幸的是,我遇到了发送到renderEvent的新calEvent被更新的情况,并且它没有更新日历上的实例。这可能是因为源字段?它只发生在新增动态添加的事件中。
有人可以协助如何正确编辑活动吗?以及如何正确使用此源字段。