fullcalendar在eventResize之后的事件结束日期不正确



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

我使用的是这个代码:

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

如果我只是简单地移动事件(拖放),它运行良好,并正确返回开始日期,

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

演示

我创建了一个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);

演示Plunker

我的答案来得很晚,但正如本文所述,Moments.js.将event.start_i用于内部逻辑

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

通过添加.utc().format() 解决了我的问题

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

moment文档引用

相关内容

  • 没有找到相关文章

最新更新