Fullcalendar:在上一次/下一次点击后保留事件属性

时间:2013-08-22 07:25:45

标签: jquery html css fullcalendar

目标:我正在使用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。

我该如何解决这个问题?我经常搜索但没找到我想要的东西。提前谢谢。

3 个答案:

答案 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);