在日历上放置外部事件后,完整的日历是否必须重新呈现每个事件?

问题描述:

我正在构建一个允许用户将外部事件拖放到日历上的日历。当他们这样做时,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> 

不要将您的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