FullCalendar(1.6)难以使用renderEvent更新日历上的现有事件

时间:2015-12-18 18:19:47

标签: fullcalendar

我使用的是旧版本的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被更新的情况,并且它没有更新日历上的实例。这可能是因为源字段?它只发生在新增动态添加的事件中。

有人可以协助如何正确编辑活动吗?以及如何正确使用此源字段。

0 个答案:

没有答案