【问题标题】:Coloring holidays after an Ajax call in FullCalendar在 FullCalendar 中的 Ajax 调用后着色假期
【发布时间】:2017-06-24 10:14:45
【问题描述】:

我正在与http://fullcalendar.io/ 合作。 我的目的是为假期提供不同的背景颜色。经过大量搜索后,我可以说一个好的解决方案是使用 dayRender 挂钩。但是如何获取假期列表,时间呢?

解决方案 1:每天进行一次 Ajax 调用。

dayRender: function (date, cell) {
    $.ajax({
        url: '/myproject/holidays?date='+date,
        type: "POST",
        success: function(isHoliday) {
            if (isHoliday) {
                cell.css("background-color", "red");
            }
        }
    });
}

它应该可以工作,但是……每天都需要一个 Ajax 调用?这似乎不是一个好的解决方案..

解决方案 2:一个 ajax 调用来获取所有假期

dayRender: function (date, cell) {
    if ($.inArray(date, holidayList)) {
        cell.css("background-color", "red");
    }
}

“holidayList”之前在某处获取的位置。 这是我的问题。什么时候之前?我如何确定在每个 dayRender 被调用之前已经完成了holidayList 的获取? 换句话说:我可以依靠一个钩子来获取假期列表吗?

谢谢

【问题讨论】:

  • 您可能会发现this answer 很有帮助。
  • 那个答案(我已经读过)并没有给我的问题添加任何内容,它建议使用“dayRender”,这在我的问题中已经提到过。不过还是谢谢你。

标签: javascript jquery ajax fullcalendar


【解决方案1】:

我在这里看到两个选项:

  1. 仅在假期获取 Ajax 请求完成后初始化整个日历(同时显示加载器/微调器)。简单,但不“漂亮”。

  2. 假期获取 Ajax 请求完成后,刷新整个日历视图。由于内部 reinitView 方法遗憾地没有被导出以供外部调用,因此您必须再执行几个步骤:

    var fcEl = $('#calendar'),
        view = fcEl.fullCalendar('getView');
    view.unrenderDates();
    view.renderDates();
    fcEl.fullCalendar('refetchEvents');
    

【讨论】:

  • 谢谢。我想我会选择第一个,不是因为它更简单,而是因为我不喜欢第二次提取的想法,因为它可能会导致闪烁的事件,或者更糟糕的是,丢失用户的操作。
  • 当然,表格会短暂显示而没有假日背景颜色,这取决于 ajax 请求需要多长时间,这是真的。
猜你喜欢
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多