2

カレンダーに追加されたイベントをCookieに保存できる外部ドラッグ機能を備えたFullCalendarを作成しようとしています(これをサーバーに保存することを強く望んでいましたが、それはオプションではありません)。私はそれを簡単にするためにjquerycookieプラグインを使用しています。

私がこれまでに持っているのは、保存機能です(これは機能していると思います)。

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,
             ...........

以前にこれを行ったことがある人や、サーバーを使用せずにイベントを保存する方法を知っている人がいる可能性はありますか?

4

2 に答える 2

4

cookieプラグインは複雑なオブジェクト配列を保存できないと思います。そのため、を使用することを提案しJSON.stringifyました。ただし、によって返されるObject配列には、.fullCalendar('clientEvents')再帰的なObject参照が含まれているためJSON.stringify、これを正常に変換することさえできません。

このフィドルを見てください:http: //jsfiddle.net/100thGear/v6tSd/

一時オブジェクト配列を作成してからCookieに保存し、完全に機能しましたJSON.stringifyJSON.parse

これが役立つかどうか教えてください。

于 2012-07-26T16:33:38.677 に答える
0

FullCalendar v1では、データをリモートでロードしている場合、clientEventsのコンテンツには各イベントの「ソース」と呼ばれるキーとオブジェクトのペアが含まれます。そのペアにはリモートデータのURLが含まれており、オブジェクトの配列ではなく文字列を必要とする場所に保存または送信するためにclientEventsを文字列化しようとすると、「循環構造をJSONに変換しています」というエラーが返されます。私が使用した回避策は、次のスクリプトを使用して「ソース」キーとオブジェクトを削除することです。

var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
for (var i = 0; i < eventsFromCalendar.length; i++) {
    delete eventsFromCalendar[i].source
    }
var jstrng = JSON.stringify(eventsFromCalendar);
于 2014-12-09T04:26:16.543 に答える