在 FullCalendar 中拖动或调整事件大小后获取新的资源 ID

Get the new resource id after an event has been dragged or resized in FullCalendar

我将 FullCalendar 与 Scheduler 插件一起使用,我正在尝试为刚刚被拖动或调整大小的事件获取新的资源 ID。如果我 console.log eventResizeeventDragStop 函数的 event 参数,我总是得到事件的初始资源 ID。

知道如何实现吗?

下面是我目前的代码:

$('#calendar').fullCalendar({
    schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives',
    locale: 'ro',
    header: {
        left: '',
        center: 'title',
        right: ''
    },
    defaultView: 'agendaDay',
    views: {
        agenda: {
            titleFormat: 'dddd, D MMMM'
        }
    },
    minTime: '07:00:00',
    maxTime: '24:00:00',
    slotDuration: '00:30:00',
    slotLabelFormat: 'HH(:mm)',
    allDaySlot: false,
    resources: {
        url: '/some/endpoint/here',
        type: 'POST',
        data: {
            type: $('#type').val()
        }
    },
    events: '/some/other/endpoint/here',
    eventOverlap: false,
    eventConstraint: {
        start: '07:00',
        end: '24:00'
    },

    dayClick: function(date, jsEvent, view, resourceObj) {
        var check = moment(date).format('YYYY-MM-DD');
        var today = moment(new Date()).format('YYYY-MM-DD');

        if (check >= today) {
            // Some logic here
        }
    },

    eventClick: function(calEvent, jsEvent, view) {
        var check = moment(calEvent.start).format('YYYY-MM-DD');
        var today = moment(new Date()).format('YYYY-MM-DD');

        if (check >= today) {
            // Some logic here
        }
    },

    eventResize: function(event, delta, revertFunc, jsEvent, ui, view) {
        console.log('Resize', event, jsEvent);
    },

    eventDragStop: function(event, jsEvent, ui, view) {
        console.log('Drag', event);
    }
});

"eventDragStop" (https://fullcalendar.io/docs/eventDragStop) 的文档明确指出

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

这就解释了为什么当您从那里记录时资源 ID 没有改变。

您想要处理的回调是 "eventDrop" (https://fullcalendar.io/docs/eventDrop),它在拖动停止并且事件数据已更新以反映其新位置时触发。

例如:

eventDrop: function( event, delta, revertFunc, jsEvent, ui, view ) { 
  console.log("Resource: " + event.resourceId);
}

应该可以为您提供所需的信息。

显然,如果您只是调整事件的大小而不能更改它所属的资源,那么这种情况与您的问题无关。