使用FullCalendar,如何在eventReceive时向EventObject添加信息?
Using FullCalendar, how to add information to EventObject when eventReceive?
我已经开始发现并使用 FullCalendar,但我一直坚持使用它。
我想要做的是 ResourceTimeline 在 Month 视图中,带有外部事件拖动(左面板)。
稍后的主题是当你放弃一个事件时有一个模态,以便选择你想要事件是从早上 8 点到中午 12 点,还是下午从中午 12 点到下午 6 点。
所以首先,我想做一个没有模态的简单 eventReceive,看看我是否可以在事件被删除时更新它。
但是我好像做不到,我做错了什么?
据我所知,当您在月视图中删除一个事件时,发送到 eventReceive 的参数中的事件会被修改。
eventReceive(info) {
info.event.start = moment(info.event.start).add(8, 'hours').format('YYYY-MM-DD hh:mm:ss');
// var c = confirm('OK = morning, Cancel = aprem');
// if (c) {
// console.log("morning !")
// } else {
// console.log("afternoon !")
// }
}
事件非常基本,因为我想在将它们放入日历时完成它们
new Draggable(listofEvents, {
itemSelector: '.draggable',
eventData(event) {
return {
title: event.innerText,
activite: event.dataset.activite,
allDayDefault: false,
}
},
})
我什至试图将 allDayDefault 强制设置为 false,但这并没有改变任何事情...
这是项目当前状态的codepen:https://codepen.io/nurovek/pen/zYYWGyX?editors=1000
对不起,如果我的post缺乏信息,我不习惯在SO上提问。如果缺少它,如果你问我,我会尽量更明确,当然!
根据 documentation, an event's public properties (such as "start", "end", title" etc) are read-only. Therefore to alter a property after the event is created you must run one of the "set" methods。
因此,如果您使用 setDates
方法,您的想法就会奏效:
eventReceive(info) {
info.event.setDates(moment(info.event.start).add(8, 'hours').toDate(), info.event.end, { "allDay": false } )
console.log(info.event);
}
演示:https://codepen.io/ADyson82/pen/dyymawy?editors=1000
P.S。您可能会注意到我还对您的 CodePen 做了一些其他的小改动,主要是为了更正所有指向 CSS 和 JS 文件的链接,因为它会生成各种控制台错误。这些错误是因为链接错误或只是引用了不存在的东西,并且出于某种原因,您还使用了来自两个不同版本的 fullCalendar(4.3.0 和 4.3.1)的文件,如果您想要,这绝不是一个好主意以确保完全兼容。
我已经开始发现并使用 FullCalendar,但我一直坚持使用它。
我想要做的是 ResourceTimeline 在 Month 视图中,带有外部事件拖动(左面板)。
稍后的主题是当你放弃一个事件时有一个模态,以便选择你想要事件是从早上 8 点到中午 12 点,还是下午从中午 12 点到下午 6 点。
所以首先,我想做一个没有模态的简单 eventReceive,看看我是否可以在事件被删除时更新它。
但是我好像做不到,我做错了什么?
据我所知,当您在月视图中删除一个事件时,发送到 eventReceive 的参数中的事件会被修改。
eventReceive(info) {
info.event.start = moment(info.event.start).add(8, 'hours').format('YYYY-MM-DD hh:mm:ss');
// var c = confirm('OK = morning, Cancel = aprem');
// if (c) {
// console.log("morning !")
// } else {
// console.log("afternoon !")
// }
}
事件非常基本,因为我想在将它们放入日历时完成它们
new Draggable(listofEvents, {
itemSelector: '.draggable',
eventData(event) {
return {
title: event.innerText,
activite: event.dataset.activite,
allDayDefault: false,
}
},
})
我什至试图将 allDayDefault 强制设置为 false,但这并没有改变任何事情...
这是项目当前状态的codepen:https://codepen.io/nurovek/pen/zYYWGyX?editors=1000
对不起,如果我的post缺乏信息,我不习惯在SO上提问。如果缺少它,如果你问我,我会尽量更明确,当然!
根据 documentation, an event's public properties (such as "start", "end", title" etc) are read-only. Therefore to alter a property after the event is created you must run one of the "set" methods。
因此,如果您使用 setDates
方法,您的想法就会奏效:
eventReceive(info) {
info.event.setDates(moment(info.event.start).add(8, 'hours').toDate(), info.event.end, { "allDay": false } )
console.log(info.event);
}
演示:https://codepen.io/ADyson82/pen/dyymawy?editors=1000
P.S。您可能会注意到我还对您的 CodePen 做了一些其他的小改动,主要是为了更正所有指向 CSS 和 JS 文件的链接,因为它会生成各种控制台错误。这些错误是因为链接错误或只是引用了不存在的东西,并且出于某种原因,您还使用了来自两个不同版本的 fullCalendar(4.3.0 和 4.3.1)的文件,如果您想要,这绝不是一个好主意以确保完全兼容。