FullCalendar根据视图更改事件颜色



我正在尝试动态地改变我的事件的颜色基于视图,是在完整的日历呈现。

当我用ajax将事件填充到日历中时,我动态地从服务器传递颜色和textColor。

        if event.service_area:
        if event.service_area.pk == 1:
            color = '#4986e7'
        elif event.service_area.pk == 2:
            color = '#ff7537'
        elif event.service_area.pk == 3:
            color = '#f691b2'
    else:
        color = '#00a19c'
    start = event.start_datetime.strftime("%Y-%m-%d %H:%M:%S")
    event_slug = {
        'title': event.summary,
        'start': start,
        'description': event.description,
        'location': event.location,
        'g_event_id': event.google_event_id,
        'status': event.status,
        'event_id': event.id,
        'color': '#fff',
        'textColor': color,
    }

在'month'视图中,我想保留我最初在事件json中传递的颜色(彩色文本,白色背景),但是当我切换到'basicWeek'或'agendaDay'视图时,我想切换颜色(白色文本,彩色背景)。当我第一次切换视图时,它可以工作,但随后的任何视图切换都会导致颜色无休止地切换。

eventRender: function(event, element, view) {
    if (view !== 'month' ) {
      var color = event.color;
      var text = event.textColor;
      event.color = text;
      event.textColor = color;
    }
}

我如何设置这个事件渲染脚本,只切换我原来通过的颜色,当我从'month'更改为'agenda '或'basicWeek',然后在切换回'month'视图时恢复到原来的颜色?

您在错误的对象上使用颜色。

来自文档:

  • event是尝试渲染的事件对象。
  • element是一个新创建的jQuery元素,将用于渲染。它已经用正确的时间/标题文本填充。
因此,将颜色应用于元素变量,而不是事件。这样,您的原始颜色不会在实际的事件对象中改变,只会在渲染对象中改变。

相关内容

  • 没有找到相关文章

最新更新