你好,我試圖避免FullCalendar
應用程序中的重疊事件。我定義了回調函數eventDrop
,以便檢查是否有重疊事件,並通過相應地更改event.start
和event.end
,然後調用.fullCalendar('updateEvent', event)
將當前移動的事件移動到重疊事件的末尾。避免FullCalendar中的事件疊加
這是我的代碼,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()});
},
的持續時間,是的,我發現這個問題,當我終於固定另一個=) – Lacrymology 2013-03-29 18:07:43