fullcalendar incorrect event end date after eventResize

心已入冬 提交于 2019-11-30 09:41:29

问题


After resize an event, it returns an incorrect end date.. I don't understand why..

I'm using this code:

$('#calendar').fullCalendar({
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,basicWeek,basicDay'
    },
    defaultDate: '2014-11-07',
    editable: true,

    eventDrop: function(event){
        event.start._i = event.start.format();
    },
    eventResize: function(event) {
        event.end._i = event.end.format();
    },

    eventLimit: true, // allow "more" link when too many events
    events: [{
        id: 'All Day Event',
        title: 'All Day Event',
        start: '2014-11-03'
    }, {
        id: 'popo',
        title: 'popo',
        start: '2014-11-04T10:30:00',
        end:   '2014-11-05T12:30:00',
        description: 'This is a cool event'
    }, {
        id: 'popo2',
        title: 'popo2',
        //url: 'http://google.com/',
        start: '2014-11-06'
    }]
});

If I simply move the event (drag & drop) it works fine and returns correctly the start date,

but if I resize the event, it returns an incorrect end date,
and also the start date becomes incorrect..

DEMO


回答1:


I've create a Plunker where you can see how the update is made.

It's important that, when you modify an event, the object you are modifying is the object that comes from fullCalendar('clientEvents');

Something like this will fail:

    myEvent = {
        id: 1, title : "myTitle", start: moment()
    }
    .fullCalendar('renderEvent', myEvent );
    mySlot.myTitle = "anotherTitle";
    .fullCalendar('updateEvent', myEvent );

But this will work:

    myEvent = {
        id: 1, title : "myTitle", start: moment()
    }
    .fullCalendar('renderEvent', myEvent );
    myFCEvent = .fullCalendar('clientEvents', 1);
    myFCEvent.title = "Another title";
    .fullCalendar('updateEvent', myFCEvent);

Demo Plunker




回答2:


My answer comes late but as said in this post, the event.start._i is used for internal logic by Moments.js.

Your event.start does contain your updated date (which i think is located at event.start_d) but you don't need to use these internal objects as FullCalendar will take them into account and will use the correct (updated) date by itself.




回答3:


My issue was solved by this adding .utc().format()

moment.parseZone('2016-05-03T22:15:01+02:00').utc().format(); //"2016-05-03T20:15:01Z"

moment docs reference



来源:https://stackoverflow.com/questions/26814568/fullcalendar-incorrect-event-end-date-after-eventresize

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!