Domanda

Sto cercando di creare un fullCalendar con la funzionalità di trascinamento esterno in cui è possibile salvare gli eventi aggiunti al calendario in un cookie (avrei preferito salvare questo sul server, ma non è un'opzione).Sto usando jquery cookie plugin per renderlo più facile.

Quello che ho finora è la funzionalità di salvataggio (che credo sta funzionando):

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

... Ma non riesco a ottenere il calendario per includerlo quando lo apro.Ho provato a farlo come questo, ma non sembra affatto lavorare:

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

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

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

Qualche possibilità che ci sia chiunque là fuori che lo abbia fatto prima o avere idea di come posso ottenere gli eventi salvati senza utilizzare un server?

È stato utile?

Soluzione

Il plugin dei cookie non può memorizzare array di oggetti complessi che penso.Ecco perché ho suggerito di usare JSON.stringify.Tuttavia, l'array dell'oggetto restituito da .fullCalendar('clientEvents') contiene riferimenti di oggetti ricorsivi - così anche JSON.stringify non riesce a convertirlo correttamente.

Dai un'occhiata a questo violino: http://jsfiddle.net/100thgear/v6tsd/

Ho creato un array di oggetti temp prima di conservarlo nel cookie e quindi JSON.stringify e JSON.parse ha funzionato perfettamente.

Fammi sapere se questo aiuta.

Altri suggerimenti

In FullCalendar V1, il contenuto dei clienti include una coppia di oggetti chiave chiamata "Sorgente" per ogni evento, se si carica i dati da remoto.Quella coppia ha l'URL dei dati remoti in esso, che restituisce l'errore "conversione della struttura circolare su JSON" se si tenta di stringere i clienti per salvare o inviarlo a una posizione che ha bisogno di una stringa, non di una serie di oggetti.Il lavoro intorno a quello che ho usato è rimuovere il tasto "Source" e l'oggetto con il seguente script:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top