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

时间:2014-04-30 15:50:02

标签: jquery fullcalendar repaint

我正在使用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按钮时,日历将完全重新加载,并且我添加的类将被删除。

我看到了类似的问题here,但他的解决方案涉及在事件对象本身中传递其他数据。我正在处理那些没有通过的日子。

在日历刷新后,是否有任何方法可以触发事件,类似于this response

我的功能很好我只需要一个事件来触发它的执行。

3 个答案:

答案 0 :(得分:1)

您可能需要使用eventRendereventAfterRender

我不完全理解您的问题,但您当然可以使用这些回调为您的活动添加课程

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

答案 1 :(得分:0)

来自this question的解决方案符合问题。我刚刚在不同的地方添加了触发器来处理特定的更改以适应我的问题。

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

答案 2 :(得分:0)

如果你的问题是事件div对象重新渲染并且缺少先前设置的项目,如背景颜色和类,请查看http://arshaw.com/fullcalendar/docs/event_data/Event_Object/