eventRalendar之后的fullcalendar错误事件结束日期

时间:2014-11-08 06:40:37

标签: fullcalendar

调整事件大小后,会返回错误的结束日期..我不明白为什么......

我正在使用此代码:

$('#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'
    }]
});

如果我只是移动事件(拖放),它可以正常工作并正确返回开始日期,

但如果我调整事件的大小,则返回错误的结束日期,
并且开始日期也变得不正确..

DEMO

3 个答案:

答案 0 :(得分:0)

我创建了一个Plunker,您可以在其中查看更新的方式。

重要的是,当您修改事件时,您正在修改的对象是来自fullCalendar('clientEvents')的对象;

这样的事情会失败:

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

但这会奏效:

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

Demo Plunker

答案 1 :(得分:0)

我的回答很晚,但如this post所述,event.start._i由Moments.js用于内部逻辑。

您的event.start确实包含您更新的日期(我认为它位于event.start_d)但您不需要使用这些内部对象,因为FullCalendar会将它们考虑在内并使用正确的(更新的) )单独约会。

答案 2 :(得分:0)

通过添加.utc().format()

解决了我的问题
moment.parseZone('2016-05-03T22:15:01+02:00').utc().format(); //"2016-05-03T20:15:01Z"

moment docs reference