Pergunta

Eu estou tentando criar um FullCalendar com o externo funcionalidade de arrastar, onde você pode guardar os eventos a serem adicionados ao calendário em um cookie (eu teria muito preferi guardar isso no servidor, mas isso não é uma opção).Estou usando o jquery cookie plugin para torná-lo mais fácil.

O que eu tenho até agora é a de guardar a funcionalidade (o que eu acredito que está a trabalhar):

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

...Mas eu não posso conseguir o calendário para incluir isso quando eu abrir ele.Eu tentei fazer assim, mas ele parece não funcionar em todos os:

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

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

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

Alguma chance de que há alguém lá fora que já fez isso antes ou tem alguma idéia de como eu posso começar os eventos salvos sem o uso de um servidor?

Foi útil?

Solução

O cookie plugin não pode armazenar objetos complexos matrizes, eu acho.É por isso que eu sugeriu o uso de JSON.stringify.No entanto, a matriz de Objeto retornado pelo .fullCalendar('clientEvents') contém recursiva referências de Objeto - assim, mesmo JSON.stringify não consegue converter isso com sucesso.

Dê uma olhada neste violino:http://jsfiddle.net/100thGear/v6tSd/

Eu criei um Objeto temp matriz antes de armazená-lo no cookie e, em seguida, JSON.stringify e JSON.parse funcionou perfeitamente.

Deixe-me saber se isso ajuda.

Outras dicas

Em FullCalendar v1, o conteúdo de clientEvents inclui uma chave-objeto par chamado de "fonte" para cada evento, se você está a carregar os seus dados remotamente.Esse par tem o URL da remota de dados, que retorna o erro "Conversão de estrutura circular para JSON" se você tentar stringify clientEvents, a fim de guardar ou enviar para um local que precisa de uma cadeia, não é uma matriz de objetos.O trabalho todo que eu usei é remover o "source" (fonte e objeto com o seguinte script:

var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
for (var i = 0; i < eventsFromCalendar.length; i++) {
    delete eventsFromCalendar[i].source
    }
var jstrng = JSON.stringify(eventsFromCalendar);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top