Vaya! Otro problema de estos que cuestan resolver y que gustan de compartir con la gente…
Resulta que usando el FullCalendar, nuestra aplicación empezaba a realizar más de una llamada ajax cada vez que pulsabamos un botón del calendario.
Pues el problema estaba básicamente en que cuando recargamos el calendario segun ciertas acciones del usuario, lo haciemos de la siguiente forma:
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', my_url);
Y nada… Resulta que de esta manera, se iban creando ‘event sources‘ en el calendario y FullCalendar no tiene una forma de hacer limpieza de estos de forma sencilla.
Menos mal que gracias a este hilo de google code, encontramos esta faena hecha.
Sólo tenemos que abrir nuestro fullcalendar.js (actualmente versión 1.4.11) e irnos al apartado de EventManager y añadir:
t.removeEventSources = removeEventSources;
function removeEventSources() {
sources = [];
// remove all client events from all sources
cache = [];
reportEvents(cache);
}
Ahora ya si que podemos recargar el calendario correctamente:
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('removeEventSources');
$('#calendar').fullCalendar('addEventSource', my_url);
Bueno. Espero que os ayude…