我的fullCalendar中有两种类型的事件。使用以下内容从eventSources获取的内容很少:
$('calendar').fullCalendar('addEventSource' , 'source')
很少有用户创建。我在用
$('calendar').fullCalendar('renderEvent', eventData, true)
现在,在单击按钮时,我想删除从eventSources获取的所有事件,并保留用户创建的事件。
我试过做:
$('calendar').fullCalendar('removeEventSource' , function(e){ return true ; } ) ;
但这不起作用。我如何实现这项工作?
我在最近的一个项目中完成了你想要做的事情。 Fullcalendar支持非标准字段。
非标准字段
除上述字段外,您还可以在每个事件对象中包含您自己的非标准字段。 FullCalendar不会修改或删除这些字段。例如,开发人员通常包含用于回调的描述字段,例如eventRender。
所以你可以做点什么
//Save user created event
$('#calendar').fullCalendar('renderEvent', {
title: title,
end: end,
start: start,
editable : true,
//nonstandard field
isUserCreated: true,
description: description,
});
然后删除用户尚未创建的事件
//Get all client events
var allEvents = $('#calendar').fullCalendar('clientEvents');
var userEventIds= [];
//Find ever non usercreated event and push the id to an array
$.each(allEvents,function(index, value){
if(value.isUserCreated !== true){
userEventIds.push(value._id);
}
});
//Remove events with ids of non usercreated events
$('#calendar').fullCalendar( 'removeEvents', userEventIds);
或者如果你需要更少的控制然后简单(如@ A1rPun建议)
$('#calendar').fullCalendar( 'removeEvents', function(e){ return !e.isUserCreated});
你可以简单地打电话:
$('#calendar').fullCalendar('removeEventSources');
他们添加了在事件日历中删除事件源和事件的方法,只要您使用的是2.8.0即可。
要从完整日历中删除所有事件源或所有事件,请执行以下操作:
$('#calendar').fullCalendar( 'removeEventSources', optionalSourcesArray)
如果未定义optionalSourcesArray,则只删除所有事件源。在我的情况下,我需要删除事件源,所以我打电话给:
$('#calendar').fullCalendar( ‘removeEvents’, idOrFilter )
请在此处查看两个方法调用的文档:
https://fullcalendar.io/docs/removeEventSources https://fullcalendar.io/docs/removeEvents
您可以阅读有关原始removeEventSources拉取请求及其实际实现方式的更多信息: