Pregunta

Estoy tratando de crear un FullCalendar con la funcionalidad de arrastre externo donde puede guardar los eventos agregados al calendario en una cookie (me habría preferido mucho para guardar esto en el servidor, pero esa no es una opción).Estoy usando un complemento de cookie jquery para que sea más fácil.

Lo que tengo hasta ahora es la funcionalidad Guardar (que creo que está funcionando):

function save() {
    var eventsFromCalendar = $('#calendar').fullCalendar( 'clientEvents');
    $.cookie("DSCalendar", eventsFromCalendar, {expires: 1});
}

... pero no puedo conseguir que el calendario incluya esto cuando lo abra.Lo he intentado hacerlo así, pero no parece funcionar en absoluto:

$(document).ready(function() {
     ....

        var savedEvents = $.cookie("DSCalendar");
        $('#calendar').fullCalendar({

            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            events: savedEvents,
             ...........

¿Alguna oportunidad de que haya alguien que haya hecho esto antes o tiene alguna idea de cómo puedo obtener los eventos guardados sin usar un servidor?

¿Fue útil?

Solución

El plugin de cookies no puede almacenar matrices de objetos complejos, creo.Por eso sugirí usar JSON.stringify.Sin embargo, la matriz de objetos devuelta por .fullCalendar('clientEvents') contiene referencias de objetos recursivos, por lo que incluso JSON.stringify no se convierte con éxito.

Eche un vistazo a este violín: http://jsfiddle.net/100thgear/v6tsd/

He creado una matriz de objetos TEMP antes de guardarlo en la cookie y luego JSON.stringify y JSON.parse funcionó perfectamente.

Déjame saber si esto ayuda.

Otros consejos

En Fullcalendar V1, los contenidos de los clientes incluyen un par de objetos clave llamados "fuente" para cada evento, si está cargando sus datos de forma remota.Ese par tiene la URL de los datos remotos en él, lo que devuelve el error "Convertir la estructura circular a JSON" si intenta rigir a clientes para guardarlo para guardarlo a una ubicación que necesite una cadena, no una matriz de objetos.El trabajo que usé es eliminar la tecla "Fuente" y el objeto con el siguiente script:

var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
for (var i = 0; i < eventsFromCalendar.length; i++) {
    delete eventsFromCalendar[i].source
    }
var jstrng = JSON.stringify(eventsFromCalendar);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top