使用jquery fullCalendar时,为什么我在切换月份后会看到重复的事件?

 hgsfaerqw_504 发布于 2023-02-13 12:31

我正在使用jquery fullCalendar插件,我遇到了一个奇怪的问题.

当我加载第一个月(在这种情况下2013年12月)它工作正常.我调用我的ajax事件并返回一组事件.我从我的服务器返回40个事件,我看到40个事件呈现.

然后我转到下个月(2014年1月),它也运行良好.(来自服务器的41个事件和GUI中显示的41个事件)

然后我点击BACK返回到2013年12月,我得到了ajax事件,它返回相同的40个事件(如上所述),但是当日历加载时,它会看到12月份的每个事件都重复(GUI上显示80个事件),即使我只从服务器发回40,我在事件回调期间看到40.

这是我的代码:

$('#calendar').fullCalendar({
  header: {
    left: 'prev,next title today',
    right: ''
  },
  lazyFetching: false,
  editable: false,
  timeFormat: 'H:mm{-H:mm} ',

  viewDisplay: function (view) {
    ViewDisplay();
  },

  events: function (start, end, callback) {

    $('#Month').val($('#calendar').fullCalendar('getDate').getMonth() + 1);
    $("#Year").val($('#calendar').fullCalendar('getDate').getUTCFullYear());

    var serializedFormInfo = $('#rotaForm').serialize();

    $.ajax({
      url: '/SupportRota/GetEvents/',
      dataType: 'json',
      cache: false,

      data: serializedFormInfo,
      success: function (data) {
        callback(data.RotaEvents);
      }
    });
  }
});

我尝试添加lazyLoading:false,因为我认为它是某种缓存,但这似乎并没有解决问题.

我在萤火虫上放了一个断点

callback(data.RotaEvents)

我看到40个事件,但在上述场景中屏幕上会显示80个事件.

有什么建议吗?

2 个回答
  • 也许是一个"硬核"答案,但很简单:我认为事件可以在浏览器中缓存并解释为什么你有重复.

    只需在ajax通话前添加此行:

    $('.fc-event').remove();
    

    您不必担心此事件是否已经呈现,并且在加载方面可能更快.

    2023-02-13 12:34 回答
  • 如果事件已设置为

    $('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
    

    (如我发现的示例中)您可能希望使用以下命令指定事件创建:

    $('#calendar').fullCalendar('renderEvent', copiedEventObject, false);
    

    false会使事件"不粘"(这是默认行为;您也可以只删除true)并允许事件在日历重新获取事件时消失 - 这对我来说是这样的:-)

    2023-02-13 12:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有