目标:我正在使用Fullcalendar和agendaWeek视图。我需要做的是点击某一周的几个事件(改变它们的颜色),然后点击下一个转到下一周并选择其他几个事件。
问题:每当我点击下一个旧事件(前一周的形式)都会失去我给他们的属性。例如,我更改了它们的颜色并添加了一个active属性(自定义属性以了解当前选择了哪些事件)。这是我的代码
$('#calendar').fullCalendar({
defaultView: 'agendaWeek',
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaWeek,agendaDay'
},
allDaySlot:false,
editable: false,
events: link_here,
eventClick: function(calEvent, jsEvent, view) {
if(calEvent.active)
{
calEvent.active=false;
current_lessons= current_lessons.replace(calEvent.class_date+calEvent.class_id+"$",'');
}
else
{
calEvent.title="clicked";
calEvent.active=true;
current_lessons+=calEvent.class_date+calEvent.class_id+"$";
}
if($(this).hasClass('active'))
$(this).removeClass('active');
else $(this).addClass('active');
}
});
活动类用于为元素着色。所以正在发生的事情是事件变得有色,他们正在获得一个活动集的新属性为true,然后一旦我点击下一步并返回,所有事件都是未着色的并且将活动属性设置为false。
我该如何解决这个问题?我经常搜索但没找到我想要的东西。提前谢谢。
答案 0 :(得分:1)
如果其他人面对这个问题的解决方案是Fullcalendar,当使用来自URL的JSON生成数据时,每次使用next / previous进入另一周时,将从URL重新获取事件,因此事件属性将被重置。解决方案是实际拥有事件源的数组。我通过进入javascript文件并阅读部分代码来发现这一点。它已尝试使用数组并且它没有导致相同的错误,虽然我在一个小数组上尝试它,我会在大型数据集上尝试它,看看它是否成功。
答案 1 :(得分:1)
我在使用全日历时遇到了同样的问题。我注意到您是否调用renderEvent方法:
app.calendarObj.fullCalendar("renderEvent", {
"start": "someDateTime",
"end": "otherDateTime"
});
您将true添加为该方法事件中的第二个参数,即使您更改谷值月份也是如此。
app.calendarObj.fullCalendar("renderEvent", {
"start": "someDateTime",
"end": "otherDateTime"
},true);
答案 2 :(得分:0)
尝试强制fullcalendar在修改后更新事件:
this.$("#calendar").fullCalendar('updateEvent', calEvent);
如果问题仍然存在,也许fullcalendar没有得到正确的参考。那么,试试这个:
// get specif event (reference)
var specificEvent = $('#calendar').fullCalendar('clientEvents', calEvent.id);
this.$("#calendar").fullCalendar('updateEvent', specificEvent);