当前位置: 首页 > 知识库问答 >
问题:

FullCalendar:在下一次/上一次单击后保留日期属性

养鸿运
2023-03-14

我使用FullCalendar作为用户安排约会的界面。当我加载日历时,我会根据当天已排定的约会数量来绘制各个日期。代码如下:

 function paintCalendar (dailyPercentage) {
    $.each(dailyPercentage, function(){
            if (this.percentage >= 65) {
                $cell = $('td.fc-future[data-date="' + this.date.substring(0, 10) + '"]');
                $cell.addClass('fc-high-traffic');
                $calendar.fullCalendar('refetchEvents');
            } else if (this['percentage'] >= 35) {
                $cell = $('td.fc-future[data-date="' + this.date.substring(0, 10) + '"]');
                $cell.addClass('fc-medium-traffic');
                $calendar.fullCalendar('refetchEvents');
            }

    });
}

我添加的每个类都有一个背景颜色。

但是,当用户单击prev、next或today按钮时,日历将完全重新加载,并且删除我添加的类。

我在这里看到了一个类似的问题,但他的解决方案涉及在事件对象本身中传递额外的数据。我在处理那些没有过去的日子。

有没有任何方法可以触发一个事件后,日历刷新类似于此响应?

我的函数工作很好,我只需要一个事件来触发它的执行。

共有3个答案

茹轩昂
2023-03-14

如果您的问题是event div对象正在重新呈现,并且缺少先前设置的项目(如背景颜色和类),请访问http://arshaw.com/fullcalendar/docs/event_data/event_object/

魏松
2023-03-14

这个问题的解决方案符合这个问题。我只是在不同的地方添加了触发器来处理适合我的问题的特定更改。

FullCalendar.js

function prev() {
    renderView(-1);
    trigger('complete', null, true);
}


function next() {
    renderView(1);
    trigger('complete', null, true);
}


function today() {
    date = new Date();
    renderView();
    trigger('complete', null, true);
}

我的javascript

complete: function () {
        paintCalendar(dailyPercentage);
    }
樊桐
2023-03-14

您可能需要使用eventRender或EventAfterRender。

我不完全理解您的问题,但您当然可以使用这些回调将类添加到您的活动中

此外,refetchEvents可能不应该在循环中使用,因为这可能会导致对服务器的多次调用

 类似资料:
  • 问题内容: 打开baseUrl后,我手动单击同意,然后搜索要显示的医生列表。我想翻阅清单。现在,Selenium仅通过找到“ ”来第一次单击。之后它停止并给出以下错误。 问题答案: 错误说明了一切: 在循环内的程序中,您将在页面上找到文本标记为 > >*的tag元素并进行调用,并且由于 HTML DOM 发生更改而导致该事件。当您的程序第二次迭代循环时,也许未加载标识为的 WebElement ,

  • 问题内容: 打开baseUrl后,我手动单击同意,然后搜索要显示的医生列表。我想翻阅清单。现在,Selenium仅通过找到“ ”第一次单击。之后它停止并给出以下错误。 问题答案: 错误说明了一切: 在循环内的程序中,您将在页面上找到文本标记为 > >*的tag元素并进行调用,并且由于 HTML DOM 发生更改而导致的事件。当您的程序第二次迭代循环时,也许未加载标识为的 WebElement ,但

  • 我的代码生成一个输入字段,允许用户输入要搜索的值。然后当他们单击提交按钮时,它会使displayMap为true,因此当MapDisplay组件呈现时,它将通过Map组件触发API搜索并返回随后显示在地图上的值。 问题是这个过程只工作一次。当我再次单击该按钮时,它确实做了一些事情,我确认它正在输入框中获取新值,但我似乎不知道如何再次渲染地图。 我尝试在this.setState中设置其他变量,试图

  • 这就是我的表单的样子: 如果用户快速按下提交按钮10次,表单也将提交10次。我尝试将添加到submit按钮和下面的脚本中,但这并不能起到任何作用: 有什么解决方法吗?

  • 我可以使用将显示为选项卡。 null 附言。这项功能存在于Twitter和Facebook的Android应用程序中。

  • 我需要创建一个按钮,如下所示: HTML 如何在JS文档中指定这些函数?