我尝试根据在完整日历中呈现的视图动态更改我的事件颜色。
当我使用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,
}
在'月' view我希望保留我最初在事件json(颜色文本,白色背景)中传递的颜色,但是当我切换到' basicWeek'或者' agendaDay' view我希望颜色切换(白色文字,彩色背景)。当我第一次切换视图时,然后任何后续的视图切换都会导致颜色无休止地切换。
eventRender: function(event, element, view) {
if (view !== 'month' ) {
var color = event.color;
var text = event.textColor;
event.color = text;
event.textColor = color;
}
}
如何设置此事件渲染脚本,以便仅在我更改的视图为“月份”时切换我最初传递的颜色。到议程日'或者' basicWeek'然后在切换回“月份”时恢复原始颜色。查看?
答案 0 :(得分:0)
您正在使用错误对象上的颜色。
来自{{3}}:
- 事件是尝试呈现的事件对象。
- 元素是一个新创建的jQuery元素,用于渲染。它已经填充了正确的时间/标题文本。
因此,将颜色应用于元素变量,而不是事件。这样,原始颜色不会在实际的事件对象中发生变化,只会在渲染对象中发生变化。