Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Fullcalendar v4中切换月份时会复制事件_Javascript_Duplicates_Fullcalendar_Fullcalendar 4 - Fatal编程技术网

Javascript 在Fullcalendar v4中切换月份时会复制事件

Javascript 在Fullcalendar v4中切换月份时会复制事件,javascript,duplicates,fullcalendar,fullcalendar-4,Javascript,Duplicates,Fullcalendar,Fullcalendar 4,我正在像这样使用Fullcalendar v4。事件已正确加载,但当我手动添加一个新事件(它也通过ajax调用保存到SQL数据库)时,我更改月份并返回,该事件将呈现两次。我不确定这是什么原因造成的,因为当我再次改变月份时,事件仍然只是翻了一番,而不是翻了一番 我已经尝试将lazyLoading或cache设置为false,例如,在使用$('.fc event')进行渲染之前删除所有事件。remove()但它没有帮助 var calendar = new FullCalendar.Calendar

我正在像这样使用Fullcalendar v4。事件已正确加载,但当我手动添加一个新事件(它也通过ajax调用保存到SQL数据库)时,我更改月份并返回,该事件将呈现两次。我不确定这是什么原因造成的,因为当我再次改变月份时,事件仍然只是翻了一番,而不是翻了一番

我已经尝试将lazyLoading或cache设置为false,例如,在使用
$('.fc event')进行渲染之前删除所有事件。remove()但它没有帮助

var calendar = new FullCalendar.Calendar(document.getElementById('calendar'), {
  defaultView: 'resourceTimeline30',
  views: {
    resourceTimeline30: {
      type: 'resourceTimeline',
      duration: { days: 30 }
    }
  },
  editable: false,
  selectable: true,
  resources: [ ... ],
  events: 'https://www.example.com/?fullcalendar=load',
  /*
  // did not help
  lazyLoading: true,
  events: {
    url: 'https://www.example.com/?fullcalendar=load',
    cache: false,
    extraParams: function() {
      return {
        cachebuster: new Date().valueOf()
      };
    }
  }
  */
});
calendar.render();

因此,根据上面的评论,如果有人需要,工作解决方案是:

替换:

  events: 'https://www.example.com/?fullcalendar=load',

并将该ID用作
addEvent()中的第二个参数


因此,根据上面的评论,如果有人需要,工作解决方案是:

替换:

  events: 'https://www.example.com/?fullcalendar=load',

并将该ID用作
addEvent()中的第二个参数


事实上,它翻了一番可以归结为服务器端数据源(每月变化时都会调用,以获取当月的新事件)和直接手动输入。我建议您不要将手动添加的事件标记为持久事件。是的,我也这么认为,但我不知道如何避免这种情况。您提到“不要将手动添加的事件标记为持久事件”。我在谷歌上搜索了一下,但在FC文档中找不到任何选项。你能多谈谈这个想法吗?就像我写的一样,我尝试使用
$('.fc event')删除所有事件,但手动添加的事件仍然存在。因此,此功能在fullCalendar 4及更高版本中的实现略有不同。我想我的话是针对旧版本的,所以我道歉。因此,请阅读并记下有关
参数的注释-如果您a)使用事件源并为事件源提供ID,或b)只需将此值设置为
true
,就可以将手动添加的事件与该源关联,然后fullCalendar将确保下次从服务器获取事件时,它还将删除手动添加的copyP.S<代码>$('.fc事件')。删除()
不会有帮助,因为这只会删除用于在屏幕上显示事件的DOM元素。它不会从fullCalendar的内部事件列表中删除任何事件,因此它将在下次呈现日历和/或事件时简单地重新绘制所有事件。如果我将
true
作为第二个参数添加到
addEvent()
,console会给我一个错误
没有id为“true”的源。但是,当我将ID添加到源代码中并在
addEvent()
中使用相同的ID作为第二个参数时,它似乎起了作用,事件不再加倍。非常感谢您的帮助,我对此表示感谢。事实上,它翻了一番可以归结为在服务器端源中拥有数据(每次月份变化时都会调用该源,以获取该月份的新事件)以及直接手动输入。我建议您不要将手动添加的事件标记为持久事件。是的,我也这么认为,但我不知道如何避免这种情况。您提到“不要将手动添加的事件标记为持久事件”。我在谷歌上搜索了一下,但在FC文档中找不到任何选项。你能多谈谈这个想法吗?就像我写的一样,我尝试使用
$('.fc event')删除所有事件,但手动添加的事件仍然存在。因此,此功能在fullCalendar 4及更高版本中的实现略有不同。我想我的话是针对旧版本的,所以我道歉。因此,请阅读并记下有关
参数的注释-如果您a)使用事件源并为事件源提供ID,或b)只需将此值设置为
true
,就可以将手动添加的事件与该源关联,然后fullCalendar将确保下次从服务器获取事件时,它还将删除手动添加的copyP.S<代码>$('.fc事件')。删除()
不会有帮助,因为这只会删除用于在屏幕上显示事件的DOM元素。它不会从fullCalendar的内部事件列表中删除任何事件,因此它将在下次呈现日历和/或事件时简单地重新绘制所有事件。如果我将
true
作为第二个参数添加到
addEvent()
,console会给我一个错误
没有id为“true”的源。但是,当我将ID添加到源代码中并在
addEvent()
中使用相同的ID作为第二个参数时,它似乎起了作用,事件不再加倍。非常感谢你的帮助,我很感激。
   calendar.addEvent(event, 1);