删除fullCalendar中的所有eventSource

时间:2015-06-01 10:14:28

标签: javascript calendar fullcalendar

我的fullCalendar中有两种类型的事件。使用以下内容从eventSources获取的内容很少:

    $('calendar').fullCalendar('addEventSource' , 'source') 

很少是由用户创建的。我正在使用

    $('calendar').fullCalendar('renderEvent', eventData, true)

现在点击按钮后,我想删除从eventSources获取的所有事件,并保留用户创建的事件。

我尝试过:

     $('calendar').fullCalendar('removeEventSource' , function(e){ return true ; } ) ; 

但这不起作用。我如何实现这项工作?

3 个答案:

答案 0 :(得分:1)

我在最近的一个项目中完成了你想要做的事情。 Fullcalendar支持非标准字段。

  

非标准字段

     

除上述字段外,您还可以添加自己的字段   每个事件对象中的非标准字段。 FullCalendar不会修改   或删除这些字段。例如,开发人员通常包括一个   用于回调的描述字段,例如eventRender。

     

Source

所以你可以做类似

的事情
//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拉入请求,以及如何它实际上是在这里实现:

https://github.com/fullcalendar/fullcalendar/issues/948