当我在传递给source
的事件中指定renderEvent
参数时,我在向fullCalendar添加事件时遇到了问题 - 我做错了什么?
如果我指定source
,则事件不会(永远)显示在日历上...查看fullcalendar.js v2.3.2 line 9348可能是cache.push(events)
被错误地放在if
中{1}}声明就在上面?
(这里的情况是,当我添加新事件时,我希望它们成为特定源的一部分,而不是fullCalendar的内部“粘性”源。)
谢谢!
答案 0 :(得分:3)
您不应指定源属性。 来自event object documentation:
source:事件源对象。 自动填充。
对此事件来自
的事件源的引用
我可以在检查源属性的工作原理时创建plunker with very Basic fullCalendar 2.3.2 with creation of event with source:
因此,如果您定义一个类似的事件:
{
title : 'mytitle',
start : moment(),
allDay: false,
id: 1,
description: 'my event from source'
}
您可以在plunkr的控制台中检查事件是否接收到Source属性,并自动填充内容:
event.source
{
events: Array[1],
className: Array[0],
origArray: Array[1]
}
因此,为了您的目标,您应该将事件定义为数组源中的项目:
var mySource1 = [{
title : 'Source 1',
start : moment(),
allDay: false,
id: 1,
description: 'my event 1'
}];
var mySource2 = [{
title : 'Source 2',
start : moment().add(1, 'days'),
allDay: false,
id: 2,
description: 'my event from 2'
}];
要将它们附加到日历上,您可以:
在您的日历中定义的不是您的活动,而是使用eventSources
作为您的来源数组来源:
$('#calendar').fullCalendar({
(...)
eventSources:[mySource1, mySource2],
});
.fullCalendar( 'addEventSource', mySourceN );
更新eventSource: 如果要将事件动态添加到特定源,唯一可以实现的方法是删除并再次添加源:
类似于:
var myNewEvent: {
title : 'mytitle',
start : moment(),
allDay: false,
id: 1,
description: 'my event from source'
};
mySource.push(myNewEvent);
$('#myCalendar').fullCalendar( 'removeEventSource', mySource);
$('#myCalendar').fullCalendar( 'addEventSource', mySource);
老实说,我不喜欢这个C选项,但也许就是你需要的。在这种情况下有open issue,Adam Shaw提出了解决方案。