我正在构建一个允许用户将外部事件拖到日历上的日历。当他们这样做时,ajax调用将触发并将事件保存到数据库。为了理解什么事件然后调整大小或确实重新安排,我使用刚刚在数据库中创建的事件的id更新事件。这意味着如果我需要进一步更新事件。即有人移动事件或确实改变持续时间等我可以用另一个ajax调用触发id并更新事件。
问题在于,每次在日历上删除某个事件时,每个事件似乎都会重新渲染,从而消除了添加到每个事件的ID的ID。有没有办法阻止完全重新渲染?或者保留元素上的id的方法?你可以在下面看到我将id occurrence - 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 :(得分: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了解详情。
在我的实现中,只要使用 drop 回调函数将新事件保存到日历中,我的ajax响应就会返回日历 eventObject 的json表示,然后我调用renderEvent方法将其添加到日历中。我的json事件对象包含一个id属性。
$(#calendarContainer').fullCalendar('renderEvent', results.calendarEvent);