Вопрос

Я пытаюсь создать FullCalendar с функцией внешнего перетаскивания, где вы можете сохранять события, добавленные в календарь, в файле cookie (я бы предпочел сохранить это на сервере, но это не вариант).Я использую плагин jquery cookie, чтобы упростить задачу.

На данный момент у меня есть функция сохранения (которая, я считаю, работает):

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

...Но я не могу включить это в календарь, когда открою его в следующий раз.Я пробовал сделать это так, но, похоже, это вообще не работает:

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

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

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

Есть ли шанс, что есть кто-нибудь, кто делал это раньше или имеет представление о том, как я могу сохранить события без использования сервера?

Это было полезно?

Решение

Я думаю, что плагин cookie не может хранить сложные массивы объектов.Вот почему я предложил использовать JSON.stringify.Однако массив Object, возвращаемый .fullCalendar('clientEvents') содержит рекурсивные ссылки на объекты - поэтому даже JSON.stringify не удается успешно преобразовать это.

Взгляните на эту скрипку:http://jsfiddle.net/100thGear/v6tSd/

Я создал массив временных объектов перед сохранением его в файле cookie, а затем JSON.stringify и JSON.parse работал отлично.

Позвольте мне знать, если это помогает.

Другие советы

В FullCalendar V1 содержимое клиента содержит пару клавишных объектов, называемую «Источник» для каждого события, если вы загружаете ваши данные удаленно.Эта пара имеет URL URL удаленных данных в нем, что возвращает ошибку «Конвертирование круговой структуры на JSON», если вы попытаетесь затрагивать клиенты, чтобы сохранить или отправить его в местоположение, которая нуждается в строке, а не массив объектов.Работа вокруг того, что я использовал, это удалить ключ «источник» и объект со следующим сценарием:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top