【发布时间】:2018-09-13 09:10:48
【问题描述】:
我正在使用一个完整的日历应用程序,在单击事件时,它会打开一个包含事件信息的模式。在此模式中,也可以更改事件数据,例如 event.start、event.end 和 event.allDay。
当点击 allDay 复选框时,事件会自动更新以表示新状态,但是,当事件之前是非 allDay 事件时。事件数据包含两个额外的属性: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);
谁能告诉我这里缺少什么?
【问题讨论】:
-
您能给我们举个例子吗?请提供一些发生此问题的事件的真实事件数据? “findEvent”还有什么作用?它是否从 fullCalendar 本身获取当前事件(例如,使用“clientEvents”方法)?您是否查看过浏览器的网络工具和/或设置 JS 断点来检查请求提交到服务器时的变量值,以查看当时的开始/结束值是什么?即证明这不是后端的错?