javascript - 使用fullCalendar将allDay设置为false时,如何动态设置事件开始和结束时间?
问题描述
我正在使用一个完整的日历应用程序,在单击一个事件时,它会打开一个带有事件信息的模式。在此模式中,也可以更改事件数据,例如 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);
谁能告诉我我在这里想念什么?
解决方案
存放日期时,请制作一份副本。你set
马上打电话,这会抹杀你原来的时间。
event.oldStart = event.start.clone();
event.oldEnd = event.end.clone();
当您从 allDay 切换回来时,您的事件没有持续时间。
推荐阅读
- vue.js - 从 Highchart 事件内部更改 VueJS 组件数据值
- arrays - 无法使用地图功能 react-native
- c# - asp.net core 中的 TryValidateModel 在执行单元测试时抛出空引用异常
- docker - 在 Apache Aurora 中强制拉取 docker 镜像
- r - R中的网络抓取,一个与电子邮件相关的奇怪跨度类
- x86 - VEX 前缀编码和 SSE/AVX MOVUP(D/S) 指令
- javascript - 将数组字符串的声明拆分为字符串数组
- .htaccess - 指向专用 IP 的通配符域(不是子域) - /home/user/public_html/landing/
- vb.net - IF 语句中 VB.Net 2017 中 Intellisense 的异常行为
- android - Android Studio 3.3 的新项目结构中缺少文件依赖项