1

目标:我将 Fullcalendar 与议程周视图一起使用。我需要做的是单击某一周的几个事件(以更改它们的颜色),然后单击下一步转到下一周并选择其他几个事件。

问题:每当我单击下一个旧事件(前一周形成)时,它们都会失去我给它们的属性。例如,我更改它们的颜色并添加一个 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');

  }
});

活动类用于为元素着色。所以再次发生的事情是事件被着色,它们获得了一个新的活动属性设置为真,然后一旦我点击下一步并返回,所有事件都是无色的并且活动属性为假。

我怎么解决这个问题?我搜索了很多,但没有找到我想要的。先感谢您。

4

3 回答 3

1

万一其他人遇到此问题的解决方案是 Fullcalendar,当使用从 URL 生成的 JSON 数据时,每次使用 next/previous 转到另一周时,将从 URL 重新获取事件,因此事件属性将被重置。解决方案是实际上有一个事件源数组。我通过进入 javascript 文件并阅读部分代码发现了这一点。它用数组尝试过,并没有导致同样的错误,虽然我在一个小数组上尝试过,但我会在一个大数据集上尝试它,看看它是否成功。

于 2013-08-23T14:47:25.870 回答
1

我在使用全日历时遇到了同样的问题。我注意到如果您调用 renderEvent 方法:

app.calendarObj.fullCalendar("renderEvent", {
      "start": "someDateTime",
      "end": "otherDateTime"
    });

并且您在此方法中添加 true 作为第二个参数,即使您更改低谷月份,事件也会保留在您的日历上。

app.calendarObj.fullCalendar("renderEvent", {
      "start": "someDateTime",
      "end": "otherDateTime"
    },true);
于 2018-06-20T04:14:14.300 回答
0

尝试在修改后强制 fullcalendar 更新事件:

this.$("#calendar").fullCalendar('updateEvent', calEvent);

如果问题仍然存在,则可能 fullcalendar 没有得到正确的参考。然后,试试这个:

// get specif event (reference)
var specificEvent = $('#calendar').fullCalendar('clientEvents', calEvent.id);
this.$("#calendar").fullCalendar('updateEvent', specificEvent);
于 2013-08-22T13:31:03.307 回答