javascript – 在拖动开始时将更多事件添加到fullcalendar

我需要能够让用户在我的fullcalendar周围移动一些事件.而且我想要去服务器并获取交易对手的忙碌时间,并在拖曳状态下将它们显示为日历上的背景事件.但是,当拖动发生时,当我调用.fullcalendar(‘renderEvents’,[…])时,fullcalendar中的拖动机制会中断并停止.

有没有办法添加事件而不破坏拖动或其他方式突出显示繁忙时间必须用ajax调用检索?

示例在这里:https://jsbin.com/qikiganelu/1/edit?js,output.尝试拖动“与Bob会面”.

$(function() { // document ready
  
  $('#calendar').fullCalendar({
    header: {
      left: '',center: '',right: ''
    },defaultView: 'agenda',duration: {days: 2},allDaySlot: false,defaultDate: '2017-04-27',minTime: '9:00',maxTime: '17:00',events: [
      {
        title: 'Keynote',start: '2017-04-27T09:00',end: '2017-04-27T11:00',editable: false,color: "gray",},{
        title: 'Meeting with Bob',start: '2017-04-27T12:30',end: '2017-04-27T13:00',editable: true,],eventDragStart: function(event,jsEvent,ui,view){
      // fetch Bob's busy times and add them as background events
      var busyTimes = [
        {
          start: '2017-04-27T14:00',end: '2017-04-27T16:00',rendering: 'background',{
          start: '2017-04-28T9:00',end: '2017-04-28T12:00',}
      ];
      $('#calendar').fullCalendar('renderEvents',busyTimes);
    },});

});
body {
  margin: 40px 10px;
  padding: 0;
  font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
  font-size: 14px;
}

#calendar {
  max-width: 900px;
  margin: 0 auto;
}
<!DOCTYPE html>
<html>
<head>
<Meta charset='utf-8' />
<link href='https://fullcalendar.io/js/fullcalendar-3.4.0/fullcalendar.css' rel='stylesheet' />
<link href='https://fullcalendar.io/js/fullcalendar-3.4.0/fullcalendar.print.css' rel='stylesheet' media='print' />
<script src='//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js'></script>
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='https://fullcalendar.io/js/fullcalendar-3.4.0/fullcalendar.js'></script>

<!-- the code from the JavaScript tab will go here -->


<!-- the code from the CSS tab will go here -->

</head>
<body>

	<div id='calendar'></div>

</body>
</html>

解决方法

作为解决方法,请尝试预加载所有后台事件,但通过CSS隐藏,直到拖动操作发生.例如:
// hide all background events by default
.fc-bgevent {
  display: none;
}

// redisplay once "show-background-events" class toggled on
.fc-bgevent.show-background-events {
  display: block;
}

通过切换.show-background-events类来显示/隐藏背景事件,如下所示:

eventDragStart: function(event,view){
  $(".fc-bgevent").addClass("show-background-events");
},eventDragStop: function(event,view){
  $(".fc-bgevent").removeClass("show-background-events");
}

示例:https://jsbin.com/vuvacisibu/1/edit?css,output

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ &quot;TOC&quot; 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...