为什么 eventDragStop 不能在回调中编辑事件? (全日历 v4)

Why can't eventDragStop not edit the event in the callback? (FullCalendar v4)

我正在使用 fullcalendar(v4 alpha)来安排活动。
我有一个 eventDragStop 回调,我试图用它来为事件设置 extendedProp,标记事件已被更改。

eventDragStop: function (info) {
                        calendar.getEventById(info.event.id).setExtendedProp("extra2", true)
                }  

使用上面的代码,它不起作用。如果我 alert(info.event.id),我可以看到正在为已拖动的事件调用正确的 ID,并且没有错误。

如果我在日历上有三个事件,ID 分别为:1、2、3,并使用以下代码:

eventDragStop: function (info) {
                        calendar.getEventById(1).setExtendedProp("extra2", true)
                }  

所以,明确声明要更改 ID 号 1,而不是回调中的事件。
如果我拖动事件编号 1,这也不起作用。但是,如果我拖动事件 2 或 3,它将起作用并更改事件 1。

反之亦然,我明确声明的任何事件,它将能够更改该事件,前提是该事件不是触发 eventDragStop 回调的事件。

谁能告诉我这是为什么?

https://fullcalendar.io/docs/v4/eventDragStop 说(本身就是回调)

"It is triggered before the event’s information has been modified"

所以我认为这里发生的事情是 fullCalendar 有效地覆盖了您在此回调期间对事件数据所做的任何更改。

我认为这是因为在此回调运行后的某个时间,事件对象可能会被新版本(基于其最终放置位置构建)替换。
我还没有通过查看源代码来验证这一点,但这是对您所看到的问题的合理解释,而且事件对象在拖动后会得到更新(使用新的 dates/times 等)也有一定的意义已完成,这实际上可能涉及当时对象数据的完全刷新。

无论如何,这就是为什么在拖动事件 1 时您无法保留对事件 1 的其他数据的任何更新,但是在拖动事件 2 或 3 时您能够保留对事件 1 的更改 - 因为在那种情况下事件 1 的由于拖动完成,数据不会在稍后被替换。

您应该在 eventDrop (https://fullcalendar.io/docs/v4/eventDrop) 期间修改事件,而不是使用 eventDragStop。此回调发生在 fullCalendar 完全完成处理 dragging/dropping 并更新事件时间等之后。因此,您对我期望的事件数据所做的任何进一步更改都应该保留。