提问者:小点点

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


我使用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个答案

匿名用户

您可能需要使用eventRender或EventAfterRender。

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

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

匿名用户

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

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);
    }

匿名用户

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