如何解决如何在不等待数据库添加的情况下以全日历方式添加事件
我想出了如何在全日历中快速添加事件,这个想法是添加到日历,显示并保存到数据库后,而无需等待数据库,但是最近添加的事件在返回一周并返回时会重复。 / p>
将事件添加到日历的代码是这样的:
// First add the event to calendar,displaying almost instantly.
var idTemp = Math.floor(Math.random() * 100000) + 1;
var event = {
id: idTemp,title: TextoEvento,start: CalendarInfoSelect.start,end: CalendarInfoSelect.end,allDay: false,tituloOriginal: TextoEvento,backgroundColor: colorEvento,textColor: colorEventoTexto
};
calendar.addEvent(event );
// Then,add to database:
$.ajax({
cache: false,url: '@Url.Action("EventAddedTareaReciente","CH")',type: "POST",dataType: 'json',data: {
id: Idbd,idAct: IdAct,idProy: IdProy,idProd: IdProd,newStart: CalendarInfoSelect.startStr,newEnd: CalendarInfoSelect.endStr,ini: CalendarInfoSelect.start.toISOString(),fin: CalendarInfoSelect.end.toISOString()
},success: function (data) {
if (data.Id > 0) {
event = calendar.getEventById(idTemp);
// Here set id with database's one
event.setProp('id',data.Id);
}
else {
event = calendar.getEventById(idTemp);
event.remove();
}
},error: function (xhr) {
event = calendar.getEventById(idTemp);
event.remove();
}
});
这里没有错误,可以正常工作。 但是,当用户单击返回一周后又返回到原始一周时,该事件就会重复。
如果用户以这种方式添加多个事件,则此事件将在日历中重复。但是在刷新浏览器(F5)时,它们在数据库中不是重复的,这是非常好的。
就像事件以这种方式添加一样,使其在内存中变得粘滞。
有什么帮助吗?我找不到解决方案。也许还有另一种方法。
我使用FullCalendar Core Package v4.3.1
谢谢
解决方法
根据https://fullcalendar.io/docs/v4/Calendar-addEvent,如果您为事件所属的事件指定一个事件源(从逻辑上讲,它应与从数据库接收事件时从中获取事件的源相同),重新获取(例如,当日历日期更改时),它将清除日历中本地添加的事件。
如果您在设置日历时未定义特定的事件源,那么现在是时候稍作修改以支持此操作的好时机了-请参见https://fullcalendar.io/docs/v4/eventSources和https://fullcalendar.io/docs/v4/event-source-object
示例:
事件源在日历配置中定义:
eventSources: [{
id: 1,url: '/events'
}]
手动添加到日历的事件与事件源相关联:
calendar.addEvent(event,1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。