FullCalendar - クッキーでイベントを保存します
-
12-12-2019 - |
質問
Cookieのカレンダーに追加されたイベントを保存できる外部ドラッグ機能を使用してFullCalendarを作成しようとしています(これはサーバーに保存することがたくさんありますが、それはオプションではありません)。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.stringify
とJSON.parse
を完全に機能しました。
これが助けるかどうか私に知らせてください。
他のヒント
FullCalendar v1では、データをリモートでロードする場合は、各イベントに対して「ソース」というキーオブジェクトペアが含まれています。そのペアはそれにリモートデータのURLを持ち、文字列の配列ではなく文字列を保存または送信するためにクライアントエムをStringifyする場合は、クライアントエムをStringifyする場合は "Corlir Structionsへの変換"エラー "を返します。私が使用したことの周りの作業は、次のスクリプトで「ソース」キーとオブジェクトを削除することです。
var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
for (var i = 0; i < eventsFromCalendar.length; i++) {
delete eventsFromCalendar[i].source
}
var jstrng = JSON.stringify(eventsFromCalendar);
.