从FullCalendar(jQuery)中删除事件源的问题

时间:2010-06-22 10:56:12

标签: jquery fullcalendar

就在那时,我正在使用FullCalendar来显示来自多个来源的事件,一些本地JSON供稿,其他来自Google日历。我已经实现了一个功能,当它的复选框分别为true或false时,可以显示/隐藏单个日历。

我正在使用此代码来实现它:

$('#calendar_list input','#sidebar').live('click', function() {
    if($(this).is(":checked")==true) {
        // display the calendar     
        var source = $.fullCalendar.gcalFeed("http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic");
        $('#calendar').fullCalendar('addEventSource', source);
    } else {
        // remove the calendar
        var source = $.fullCalendar.gcalFeed("http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic");
        $('#calendar').fullCalendar('removeEventSource', source);
    }
});

此示例如果只是为了显示/隐藏Google日历Feed,问题是它再也不会隐藏日历...如果我单击复选框10次,(1 =关闭,2 =开启,3 =关闭, 4 = on etc)它显示同一日历的5个版本。

The documentation似乎并没有给出很多线索,而且似乎这个问题已经在Google Project网站上为这个项目带来了一些问题。

如何删除活动源?! * *呼喊

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:8)

就在那时,我实际上找到了问题的解决方案,我决定回顾一下Google Project问题,并注意到someone had raised an issue我遇到了同样的问题,现在文档说:

  

Source必须是对原始Array / URL / Function的引用。来自源的事件将立即从日历中删除。

我认为这意味着要删除一个日历,我必须使用与我添加的源相同的源,所以如果我添加了源/getEvents.php,我将不得不以相同的方式删除它,而不是它实际上是什么意思是我必须使用完全相同的来源。

所以我将源设置为数组中的项(日历ID作为键),然后我可以根据此添加/删除日历,现在已经解决了这个问题。

答案 1 :(得分:1)

添加/删除源后您应该rerender events,或者如果不起作用,可以尝试refetch events。这可能是问题所在。