您好我正在尝试避免FullCalendar
应用程序中的重叠事件。我已经定义了回调,因此它会检查任何重叠事件,并通过相应地更改和调用eventDrop
将当前移动的事件移动到重叠事件的末尾,然后调用.event.start
event.end
.fullCalendar('updateEvent', event)
这是我的代码,moment
调用的是http://momentjs.com/docs/,这是一个用于 javascript 的时间处理工具库,我认为这不是问题的罪魁祸首。如果我评论那些做的行event.start = start; event.end = end
,那么一切正常。如果我不这样做,它会以完全相同的方式中断,无论我是否调用updateEvent
。发生的情况是:事件确实被移到了前一个事件的末尾,但是如果我稍后尝试将事件向前移动(当天晚些时候到一个空白空间),前一个事件在视觉上会被延长,直到新的开始当前正在修改的事件。
self.collection
是一个主干集合,因此仅使用event.start=
注释位调用此代码会显示事件重叠,但是如果我刷新页面,则事件会显示在正确的位置(不重叠)
eventDrop: function(event, dayDelta,
minuteDelta, allDay,
revertFunc, jsEvent, ui, view) {
var start = moment(event.start);
var end = moment(event.end);
var overlap = self.calendar.fullCalendar('clientEvents', function(ev) {
if( ev == event)
return false;
var estart = moment(ev.start);
var eend = moment(ev.end);
return estart.unix() < end.unix() && eend.unix() > start.unix();
});
if( overlap.length ) {
overlap = overlap[0];
var estart = moment(overlap.start);
var eend = moment(overlap.end);
var duration = eend - estart;
start = eend;
end = start.clone();
end.add(duration);
event.start = start.toDate();
event.end = end.toDate();
self.calendar.fullCalendar('updateEvent', event);
}
event.model.save({start: start.unix(), end: end.unix()});
},