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

时间:2018-03-08 14:33:58

标签: events resources fullcalendar scheduler

我正在使用带有Scheduler插件的FullCalendar,我正在尝试为刚刚拖动或调整大小的事件获取新的资源ID。如果我在console.log中eventeventResize函数的eventDragStop参数,我总是得到事件的初始资源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);
    }
});

1 个答案:

答案 0 :(得分:1)

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

  

在事件信息被修改之前触发

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

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

例如:

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

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

显然,如果您只调整无法更改其所属资源的事件,那么这种情况与您的问题无关。