我使用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按钮时,日历将完全重新加载,并且删除我添加的类。
我在这里看到了一个类似的问题,但他的解决方案涉及在事件对象本身中传递额外的数据。我在处理那些没有过去的日子。
有没有任何方法可以触发一个事件后,日历刷新类似于此响应?
我的函数工作很好,我只需要一个事件来触发它的执行。
您可能需要使用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/