我试图创建一个具有外部拖动功能的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.但是,返回的对象数组 .fullCalendar('clientEvents') 包含递归对象引用-所以甚至 JSON.stringify 无法成功转换此。

看看这个小提琴:http://jsfiddle.net/100thGear/v6tSd/

我在将其存储在cookie中之前创建了一个temp对象数组,然后 JSON.stringifyJSON.parse 完美地工作。

如果有帮助,请告诉我。

其他提示

在fullcalandar v1中,ClientEvents的内容包括一个名为“源”的关键对象对,如果您要远程加载数据。该对具有其中的远程数据的URL,如果您尝试串行ClienceEvents以将ClientEvents保存或发送到需要字符串的位置,则返回错误“将圆形结构转换为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