如何在轮询时停止fullcalendar中断拖动和调整大小

时间:2017-01-26 22:38:56

标签: javascript fullcalendar fullcalendar-scheduler

我一直试图让fullcalendar对新事件的轮询作出反应,但每当它调用refetchEvents时,如果我拖动或调整某些东西,它就会阻止我,好像我已经在我所处的位置释放了鼠标,它将事件分别移动或调整到错误的位置。

我有一个jsfiddle,以显示这一点。

以下是代码,如果它有帮助:

$(document).ready(function() {

  /* initialize the calendar
  -----------------------------------------------------------------*/

  $('#calendar').fullCalendar({
    header: {
      left: 'prev,next today',
      center: 'title',
      right: 'month,agendaWeek,agendaDay'
    },
    editable: true,
    events: [{
      title: 'event1',
      start: '2017-01-26T08:00:00',
    end: '2017-01-26T10:00:00'
    }, {
      title: 'event2',
      start: '2017-01-05',
      end: '2017-01-07'
    }, {
      title: 'event3',
      start: '2017-01-09T06:30:00',
    end: '2017-01-09T09:30:00',
    }]
  });
});
setInterval(function() {
  $('#calendar').fullCalendar('refetchEvents');
  console.log('refetchEvents called');
}, 5000);

1 个答案:

答案 0 :(得分:1)

可能效率最高,使用fetchEventsLockeventDragStart上的eventDragStop引用,仅在发布=== false时获取事件。

var fetchEventsLock = false;
$(document).ready(function () {

    /* initialize the calendar
    -----------------------------------------------------------------*/

    function toggleLock() {
        fetchEventsLock = !fetchEventsLock;
        console.log('Set To ' + fetchEventsLock)
    }
    $('#calendar').fullCalendar({        
        eventDragStart: toggleLock,
        eventDragStop: toggleLock,
        /* Other option removed */

    });
});
setInterval(function () { 
    if (fetchEventsLock === false) {
        $('#calendar').fullCalendar('refetchEvents');
        console.log('refetchEvents called');
    }
}, 5000);