2014-12-01 49 views
0

我正在構建一個允許用戶將外部事件拖放到日曆上的日曆。當他們這樣做時,ajax調用觸發並將事件保存到數據庫。爲了理解哪些事件被調整了大小或者確實被重新安排了,我用剛在數據庫中創建的事件ID來更新事件。這意味着如果我需要進一步更新事件。即有人移動事件或確實改變了持續時間等,我可以用另一個Ajax電話觸發身份證,並更新事件。在日曆上放置外部事件後,完整的日曆是否必須重新呈現每個事件?

問題是,每次在日曆上放置一個事件時,每個事件似乎都會重新呈現,從而清除添加到每個事件的id的id。有什麼方法可以防止完全重新渲染?或者在元素上保留id的方法?你可以在下面看到我將id發生-387添加到html,但是當我添加另一個事件時,它會被清除。任何幫助,將不勝感激! :-)

<a class="fc-day-grid-event fc-event fc-start fc-end fc-draggable fc-resizable _fc4" id="occurance-387"><div class="fc-content"> <span class="fc-title">A Very Short Introduction to… Anxiety</span></div><div class="fc-resizer"></div></a> 

回答

0

不要將您的id添加到html。您應該將您的ID作爲屬性存儲在eventObject中。然後,當您需要更新數據庫時,您可以從eventObject中獲取id。

eventResize: function(event){ 
    $.ajax('http://myendpoint.com/?saveNewEndDate", {id:event.id,newEndTime: event.end.format()},function(data){ 
     if(data) {alert('Success!');} 
    }); 
} 

還有其他變量傳遞給函數可能有用:delta,revertFunc。詳情請查閱documentation

在我的實現,每當有新的事件被保存到日曆下降回調函數,我的Ajax響應返回日曆的EventObject的JSON表示,然後我打電話renderEvent方法將其添加到日曆。我的json事件對象包含一個id屬性。

$(#calendarContainer').fullCalendar('renderEvent', results.calendarEvent); 
+0

謝謝你真的很有用。但是,我如何將id存儲在事件對象中。 drop事件回調似乎並沒有創建事件,而是eventAfterRender方法?如果可能,你介意發佈一個完整的例子嗎? – 2014-12-02 12:18:48

+0

不用擔心,愚蠢的問題解決了,非常感謝,簡單的回答作品。 :-) – 2014-12-02 12:43:13

+0

你介意把它作爲正確答案嗎? – ShadeTreeDeveloper 2014-12-02 18:50:18