我的fullCalendar中有两种类型的事件。使用以下内容从eventSources获取的内容很少:
$('calendar').fullCalendar('addEventSource' , 'source')
很少是由用户创建的。我正在使用
$('calendar').fullCalendar('renderEvent', eventData, true)
现在点击按钮后,我想删除从eventSources获取的所有事件,并保留用户创建的事件。
我尝试过:
$('calendar').fullCalendar('removeEventSource' , function(e){ return true ; } ) ;
但这不起作用。我如何实现这项工作?
答案 0 :(得分:1)
我在最近的一个项目中完成了你想要做的事情。 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});
答案 1 :(得分:1)
您可以简单地致电:
$('#calendar').fullCalendar('removeEventSources');
答案 2 :(得分:0)
他们添加了删除事件源和事件日历中事件的方法,只要您使用的是2.8.0。
要从完整日历中删除所有事件源或所有事件,请执行以下操作:
$('#calendar').fullCalendar( 'removeEventSources', optionalSourcesArray)
如果未定义optionalSourcesArray,它将仅删除所有事件源。在我的情况下,我需要去除的事件源,所以我称为:
$('#calendar').fullCalendar( ‘removeEvents’, idOrFilter )
这里请参阅这方法调用的文档:
https://fullcalendar.io/docs/removeEventSources https://fullcalendar.io/docs/removeEvents
您可以阅读更多关于原removeEventSources拉入请求,以及如何它实际上是在这里实现: