2010-06-22 8 views
5

In diesem Moment verwende ich., um Ereignisse aus mehreren Quellen, einige lokale JSON-Feeds, andere aus Google Kalender anzuzeigen. Ich habe eine Funktion implementiert, mit der ein einzelner Kalender ein-/ausgeblendet werden kann, wenn das entsprechende Kontrollkästchen aktiviert ist.Problem beim Entfernen von Ereignisquellen aus FullCalendar (jQuery)

ich diesen Code bin mit ihm achive:

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

Dieses Beispiel wenn nur/um zu zeigen, einen Google-Kalender-Feed verstecken, ist das Problem, das es nie wieder den Kalender versteckt ... wenn ich das Klicken Kontrollkästchen 10 Mal, (1 = aus, 2 = ein, 3 = aus, 4 = ein usw.) zeigt es 5 Versionen desselben Kalenders an.

The documentation scheint nicht wirklich viele Hinweise geben und es scheint, dieses Problem hat ein paar auf der Google Project-Website für das Projekt plausiert.

Wie entferne ich eine Ereignissouce ?! * Schreie *

Jede Hilfe würde geschätzt werden.

Antwort

8

Rechts dann habe ich tatsächlich die Lösung für mein Problem gefunden, habe ich beschlossen, über die Google-Projekt Probleme zurückblicken und bemerkte, dass someone had raised an issue für das gleiche Problem, das ich hatte, jetzt die Dokumentation sagt:

Die Quelle muss eine Referenz auf die ursprüngliche Array/URL/Funktion sein. Ereignisse aus der Quelle werden sofort aus dem Kalender entfernt.

Ich dachte, das einen Kalender entfernen bedeutet hätte ich eine identische Quelle zu der, die ich hinzugefügt, so, wenn ich Quelle /getEvents.php hinzugefügt verwenden, um würde ich es auf die gleiche Weise entfernen müssen, statt, was es bedeutet eigentlich ist, dass ich genau die gleiche Quelle benutzen muss.

Also habe ich die Quelle als ein Element in einem Array (Kalender-ID als Schlüssel) und dann kann ich den Kalender basierend darauf hinzufügen/entfernen, das hat jetzt das Problem gelöst.

+0

Ahh, gut, ich bin froh, dass du es herausgefunden hast ... Ich kratzte mich immer noch am Kopf: P – Mottie

+0

Prost, danke für deine Hilfe trotzdem, bestimmte erleuchtete mich zu diesen beiden nützlichen Funktionen. Nur scheint die Dokumentation nicht so klar wie es sein könnte. –

+0

OMG. Bitte ... BITTE lass dies die Lösung sein, nach der ich gesucht habe. Ich war letzte Nacht von 1 Uhr morgens bis 4 Uhr nachts an diesem "doppelten Fehler". schluchz ... Ich denke, um Dinge zu klären, die Sie zu Ihrem Antwort-Code hinzufügen sollten, die Lösung, die Sie gefunden haben, zB, var gcal = $ .fullCalendar.gcalFeed (source); // die Referenz $ ('# Kalender'). fullCalendar ('addEventSource', gcal); $ ('# kalender'). FullCalendar ('removeEventSource', gcal); 'Implementieren jetzt die Daumen drücken ... – wired00

1

Sie sollten rerender events nach dem Hinzufügen/Entfernen einer Quelle, oder vielleicht versuchen, refetch events, wenn das nicht funktioniert. Das könnte das Problem sein.

+0

Vielen Dank für Ihre Antwort, aber wenn ich die Ereignisse erneut passiert, passiert nichts, wenn ich die Ereignisse erneut holen die Google Kalender fügt sich selbst: S –

+0

Nur ein Follow up @fudgey, habe ich mein Problem herausgefunden, siehe meine Antwort. Prost :-) –