调整事件大小后,返回错误的结束日期。。我不明白为什么。。
我使用的是这个代码:
$('#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文档引用