2010-06-22 16 views
5

In questo momento, sto usando FullCalendar per visualizzare eventi da più fonti, alcuni feed JSON locali, altri da Google Calendar. Ho implementato una funzione in cui un singolo calendario può essere visualizzato/nascosto quando la sua casella di controllo è true o false rispettivamente.Problema rimozione origini evento da FullCalendar (jQuery)

Sto usando questo codice per achive esso:

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

Questo esempio se solo per mostrare/nascondere un feed di Google Calendar, il problema è che non nasconde di nuovo il calendario ... se clicco il seleziona la casella 10 volte, (1 = off, 2 = on, 3 = off, 4 = on etc) visualizza 5 versioni dello stesso calendario.

The documentation non sembra dare molti indizi e sembra che questo problema sia stato inserito nel sito di Google Project per il progetto.

Come rimuovere un evento souce ?! * cries *

Qualsiasi aiuto sarebbe apprezzato.

risposta

8

Proprio allora, in realtà ho trovato la soluzione al mio problema, ho deciso di ripercorrere i temi di Google progetto e ho notato che someone had raised an issue per lo stesso problema che stavo avendo, ora la documentazione dice:

L'origine deve essere un riferimento alla matrice/URL/funzione originale. Gli eventi dalla fonte verranno immediatamente rimossi dal calendario.

ho pensato questo scopo di rimuovere un calendario avrei di utilizzare una fonte identico a quello ho aggiunto, quindi se ho aggiunto sorgente /getEvents.php avrei dovuto rimuoverlo nello stesso modo, invece che cosa significa realmente è che devo usare la stessa identica fonte.

Così ho impostato la sorgente come elemento in un array (id del calendario come chiave) e quindi posso aggiungere/rimuovere il calendario in base a questo, questo ha ora risolto il problema.

+0

Ahh, bene, sono contento che tu l'abbia capito ... Mi stavo ancora grattando la testa: P – Mottie

+0

Saluti, grazie comunque del tuo aiuto, alcuni mi hanno illuminato a quelle due utili funzioni. Sembra solo che la documentazione non sia chiara come potrebbe essere. –

+0

OMG. Per favore ... PER FAVORE lascia che sia questa la soluzione che ho cercato. Sono stato sveglio dalle 1:00 alle 4:00 della scorsa notte lavorando a questo "bug duplicato". singhiozzo ... Penso che per chiarire le cose dovresti aggiungere al tuo codice di risposta la soluzione trovata cioè, 'var gcal = $ .fullCalendar.gcalFeed (source); // il riferimento $ ('# calendar'). fullCalendar ('addEventSource', gcal); $ ('# calendar'). FullCalendar ('removeEventSource', gcal); 'Implementazione ora barrato incrociato ... – wired00

1

Si dovrebbe rerender events dopo aver aggiunto/rimosso una fonte, o forse provare a refetch events se non funziona. Questo potrebbe essere il problema.

+0

Grazie per la tua risposta, ma se riesco a rieseguire gli eventi non accade nulla, se aggiorno gli eventi il ​​calendario di Google continua ad aggiungersi: S –

+0

Solo un seguito @fudgey, ho capito il mio problema, vedere la mia risposta. Saluti :-) –