我正在使用全日历应用程序,在单击事件时,它将打开一个包含事件信息的模式。在这种模式下,也可以更改事件数据,考虑一下event.start,event.end和event.allDay。
单击allDay复选框后,该事件将自动更新以表示新状态,但是,如果该事件以前是nonallall事件。事件数据包含两个额外的属性:oldStart和oldEnd。当event.allDay设置为false时,我想使用这两个属性。然后应将event.start设置为oldStart,将event.end设置为oldEnd。
问题在于,使用此方法时,将event.allDay设置为false后更新事件的开始和结束时间时,更新后的事件将从日历视图中消失,并在后端进行更新以表示开始时间为00:00,结束时间为事件开始+ defaultEventDuration(在我的情况下为02:00:00)。
我的代码如下:
function changeAllDay(id) { // Function to change allDay property of event that was clicked on
// Find corresponding event
var event = findEvent(id);
event.allDay = !event.allDay; // Change allDay value
// Set start and end time to midnight if event is allDay
if (event.allDay) {
event.oldStart = event.start;
event.oldEnd = event.end;
event.start.set('hours', 00);
event.start.set('minutes', 00);
event.end.set('hours', 00);
event.end.set('minutes', 00);
} else {
event.start = event.oldStart;
event.end = event.oldEnd;
};
updateEvent(event);
}
updateEvent()函数执行API调用以在后端更新事件,并在成功后将事件更新为
$('#calendar').fullCalendar('updateEvent', event);
有人可以告诉我我在这里想念什么吗?
答案 0 :(得分:1)
存储日期时,请复制它们的日期。您随后拨打set
,这将耗尽您的原始时间。
event.oldStart = event.start.clone();
event.oldEnd = event.end.clone();
从allDay切换回时,您的活动没有持续时间。