こんにちは私は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()});
},