2012-07-26 2 views
2

쿠키로 캘린더에 추가 된 이벤트를 저장할 수있는 외부 드래깅 기능으로 FullCalendar를 만들려고합니다. 서버에 저장하는 것이 훨씬 좋지만 그건 옵션이 아닙니다). 나는 그것을 쉽게 만들기 위해 jquery 쿠키 플러그인을 사용하고있다.FullCalendar - 쿠키에 이벤트 저장

지금까지있어 (I가 작동 생각) 저장 기능은 무엇 :

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

전에이 일을하거나 나는이 사건이없이 구원을 얻을 수있는 방법에 어떤 생각을 가지고있다 거기에 사람이있을 가능성은 서버를 사용하고 있습니까?

+0

이것을 디버깅 할 경우 saveEvents의 값은 무엇입니까? 또한 JSON.stringify 및 JSON.parse를 사용하여 쿠키에서이 객체를 저장하고 검색 할 수도 있습니다. '$ .cookie ("DSCalendar", JSON.stringify (eventsFromCalendar), {expires : 1}); 그리고 var savedEvents = JSON.parse ($. 쿠키 ("DSCalendar"));'비슷한 문제가있었습니다 - 하지만 쿠키 대신 LocalStorage를 사용하고있었습니다. – ganeshk

+0

@ganeshk - savedEvents 값은 저장된 각 이벤트에 대해'[object Object]'입니다.이 이벤트는 적절하지 않습니다. JSON.stringify/parse를 추가하면 "{"length ": 1,"0 ": {},"context ": {"jQuery17108956974661894247 ": 1,"location ": {}},"selector ":"# calendar " }'그리고 달력은 페이지에 표시되지 않습니다. LocalStorage로 쉽게 할 수있는 방법을 찾았습니까? –

답변

4

쿠키 플러그인은 내가 생각하기에 복잡한 객체 배열을 저장할 수 없습니다. 그래서 JSON.stringify을 사용하시기 바랍니다. 그러나 .fullCalendar('clientEvents')에 의해 반환 된 Object 배열에는 재귀 개체 참조가 포함되어 있으므로 JSON.stringify도 성공적으로 변환하지 못합니다.

이 바이올린에서보세요 : http://jsfiddle.net/100thGear/v6tSd/

나는 쿠키에 저장하기 전에 임시 객체 배열을 생성 한 후 JSON.stringifyJSON.parse 완벽했다.

도움이 될지 알려주세요.

+0

고마워요! 그것은 매우 도움이되었습니다. 비록 쿠키가 제대로 저장되지 않는 것처럼 결국 localStorage에갔습니다. 마침내 효과가 있습니다! –

+0

그 덕분에 매우 유용합니다! – Chris

+0

당신은 신사이고 학자입니다. –

0

fullCalendar v1에서 clientEvents의 내용에는 데이터를 원격으로로드하는 경우 각 이벤트에 대해 "source"라는 키 - 개체 쌍이 포함됩니다. 이 쌍에는 원격 데이터의 URL이 있습니다.이 URI는 클라이언트 이벤트를 문자열로 저장하려고하거나 개체 배열이 아닌 문자열이 필요한 위치로 보내려는 경우 "순환 구조체를 JSON으로 변환"오류를 반환합니다. 다음 스크립트를 사용하여 "소스"키와 객체를 제거하는 방법을 사용했습니다.

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