You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

FullCalendar问题:点击changeView无法重置日期范围

看起来你遇到的是FullCalendar视图重复切换时不更新日期范围的常见问题,我来帮你解决~

问题原因

你原来的代码首次点击正常,是因为第一次从其他视图切换到list视图时,FullCalendar会处理你传递的startend参数;但当视图已经是list时,再次调用changeView到同一个视图,FullCalendar会跳过视图切换的逻辑,自然不会更新日期范围啦。

解决方案

试试下面这两种修改方案,都能解决这个问题:

方案一:显式更新日历选项+重新获取事件

这种方式先更新日历的全局起止日期,再切换视图(即使当前已是list视图也会触发重新渲染),最后重新拉取事件确保内容正确:

$('#checkRange').on('click', function () {
  const start = $('#firstDate').val();
  const end = $('#endDate').val();

  // 更新日历的起止日期配置
  $('#calendar').fullCalendar('option', {
    start: start,
    end: end
  });

  // 切换到list视图(强制触发视图渲染)
  $('#calendar').fullCalendar('changeView', 'list');

  // 重新获取事件,确保显示新日期范围内的内容
  $('#calendar').fullCalendar('refetchEvents');
});

方案二:跳转起始日期+切换视图

如果方案一效果不佳,可以先让日历跳转到起始日期,再切换视图并设置结束日期,最后强制渲染事件:

$('#checkRange').on('click', function () {
  const start = $('#firstDate').val();
  const end = $('#endDate').val();

  // 先跳转到起始日期
  $('#calendar').fullCalendar('gotoDate', start);

  // 切换到list视图并设置结束日期
  $('#calendar').fullCalendar('changeView', 'list', {
    end: end
  });

  // 强制重新渲染所有事件
  $('#calendar').fullCalendar('rerenderEvents');
});

小提示

记得确保你的输入框日期格式是YYYY-MM-DD(你已经符合要求啦),这是FullCalendar默认支持的ISO格式,不会有解析问题。

内容的提问来源于stack exchange,提问作者Mark

火山引擎 最新活动