我使用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');
}
});
}
我添加的每个类都有一个与之相关的背景色
但是,当用户单击"上一个"、"下一个"或"今天"按钮时,日历将完全重新加载,并且我添加的类将被删除。
我在这里看到了一个类似的问题,但他的解决方案涉及在事件对象本身中传递额外的数据。我正在处理那些没有度过的日子。
有没有什么方法可以在日历刷新后触发类似于此响应的事件?
我的函数运行得很好,我只需要一个事件来触发它的执行。
您可能需要使用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);
}
如果您的问题是事件div对象正在重新渲染,并且缺少以前设置的项,如背景颜色和类,请查看http://arshaw.com/fullcalendar/docs/event_data/Event_Object/