FullCalendar — сохранение событий в cookie
-
12-12-2019 - |
Вопрос
Я пытаюсь создать 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);
.