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

5

现在,我正在使用FullCalendar来显示来自多个来源的事件,包括本地JSON源和Google日历。我实现了一项功能,即当复选框为真或假时,可以显示/隐藏单个日历。

我使用以下代码来实现它:

$('#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);
    }
});

这个例子仅仅是为了展示如何显示/隐藏谷歌日历,但问题是它从来没有再次隐藏日历......如果我点击10次复选框(1=关闭,2=打开,3=关闭,4=打开等),它会显示5个相同日历的版本。

文档似乎并没有给出太多线索,而且在Google项目网站上,这个问题似乎困扰了一些人。

我该如何删除事件源?!*哭泣*

任何帮助都将不胜感激。

2个回答

8

好的,我实际上已经找到了解决方案,我决定回顾一下Google项目问题,并注意到有人提出了一个相同的问题,现在文档中说:

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

我以为这意味着要删除日历,我必须使用与我添加的相同的源,所以如果我添加源/getEvents.php,我必须以同样的方式删除它,而实际上它的意思是我必须使用完全相同的源。

因此,我将源设置为数组中的一个项(日历ID作为键),然后我可以基于此添加/删除日历,这现在已解决该问题。


啊,好的,我很高兴你弄清楚了...我还在纳闷呢 :P - Mottie
谢谢你的帮助,虽然如此,感谢你启发我认识了这两个有用的函数。只是文档可能没有表述得很清楚。 - Ben Everard
天啊。拜托...拜托让这个成为我一直在寻找的解决方案吧。昨晚我从凌晨1点工作到4点,一直在解决这个“重复错误”。哭泣...我认为为了澄清事情,你应该在你的答案代码中添加你找到的解决方案,例如:var gcal = $.fullCalendar.gcalFeed(source); // the reference $('#calendar').fullCalendar('addEventSource', gcal); $('#calendar').fullCalendar('removeEventSource', gcal);现在正在实施,祈祷成功... - wired00
我正在尝试实现这个修复,但在代码中我应该在哪里指定 var myFeedFull = $.fullCalendar.gcalFeed("http://www.somesite.com/feed.php");?无论我把这行放在哪里,都会出现 JavaScript 错误。我已经尝试过放在 $(document).ready(function() {$('#calendar').fullCalendar({ 以及完全放在外面。感谢任何帮助。我已经因为这个问题快要抓狂了。 - wired00
我的代码有点复杂,不能直接贴在这里。你遇到了什么JavaScript错误?你是否经历了重复事件? - Ben Everard
1
你救了我,你是传奇。我一整天都在试图弄清楚这个问题。 - Sboniso Marcus Nzimande

1

谢谢您的回复,但是如果我重新渲染事件,什么也不会发生,如果我重新获取事件,Google日历会继续添加自己:S - Ben Everard
只是跟进一下@fudgey,我已经找到了问题的解决方法,请看我的回答。谢谢 :-) - Ben Everard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接