添加源为 属性 的新事件永远不会显示?
Adding a new event with source property never displays?
当我在传递给 renderEvent
的事件中指定 source
参数时,我无法将事件添加到 fullCalendar - 我做错了什么?
如果我指定 source
,事件不会(永远)显示在日历上...查看 fullcalendar.js v2.3.2 line 9348 可能是 cache.push(events)
被错误地放置在上面的 if
语句?
(这里的场景是,当我添加新事件时,我希望它们成为特定来源的一部分,而不是 fullCalendar 的内部 "sticky" 来源)。
谢谢!
说明
您不应指定来源 属性。
来自 event object documentation:
source: Event Source Object. Automatically populated.
A reference to the event source that this event came from
我创建了一个 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 的控制台中检查该事件是否收到源 属性,自动填充,内容为:
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'
}];
要将它们附加到日历,您可以:
选项a
在您的日历中定义的不是您的活动,而是使用 eventSources
作为您的来源数组的来源:
$('#calendar').fullCalendar({
(...)
eventSources:[mySource1, mySource2],
});
选项 b
添加您的来源
.fullCalendar( 'addEventSource', mySourceN );
选项 c
正在更新事件源:
如果你想动态地添加一个事件到一个特定的源,你可以实现它的唯一方法是删除并再次添加源:
所以像这样:
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 提出了解决方案。
当我在传递给 renderEvent
的事件中指定 source
参数时,我无法将事件添加到 fullCalendar - 我做错了什么?
如果我指定 source
,事件不会(永远)显示在日历上...查看 fullcalendar.js v2.3.2 line 9348 可能是 cache.push(events)
被错误地放置在上面的 if
语句?
(这里的场景是,当我添加新事件时,我希望它们成为特定来源的一部分,而不是 fullCalendar 的内部 "sticky" 来源)。
谢谢!
说明
您不应指定来源 属性。 来自 event object documentation:
source: Event Source Object. Automatically populated.
A reference to the event source that this event came from
我创建了一个 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 的控制台中检查该事件是否收到源 属性,自动填充,内容为:
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'
}];
要将它们附加到日历,您可以:
选项a
在您的日历中定义的不是您的活动,而是使用 eventSources
作为您的来源数组的来源:
$('#calendar').fullCalendar({
(...)
eventSources:[mySource1, mySource2],
});
选项 b
添加您的来源.fullCalendar( 'addEventSource', mySourceN );
选项 c
正在更新事件源: 如果你想动态地添加一个事件到一个特定的源,你可以实现它的唯一方法是删除并再次添加源:
所以像这样:
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 提出了解决方案。