Fullcalendar不';使用eventRender时不渲染颜色
当我设置fullCalendar并设置eventRender函数回调时,我想根据LeadId是否为null来设置事件的颜色。但这似乎不起作用,即使文件上说: 有没有办法根据数据将事件颜色设置为更改Fullcalendar不';使用eventRender时不渲染颜色,fullcalendar,Fullcalendar,当我设置fullCalendar并设置eventRender函数回调时,我想根据LeadId是否为null来设置事件的颜色。但这似乎不起作用,即使文件上说: 有没有办法根据数据将事件颜色设置为更改 calendar = $('#dayview').fullCalendar({ .... timeFormat: 'HH:mm', columnFormat: { agendaDay: 'dddd
calendar = $('#dayview').fullCalendar({
....
timeFormat: 'HH:mm',
columnFormat: {
agendaDay: 'dddd dd/MM/yyyy'
},
eventClick: function (calEvent, jsEvent, view) {
var leadUrl = "/Leads/" + calEvent.LeadId;
window.location = leadUrl;
},
eventRender: function (event, element) {
if (event.LeadId != null) {
event.eventColor = "#B22222";
event.eventBackColor = "#B22222";
}
},
更新:
这真奇怪。事件已从服务器返回事件的所有我的属性。
元素只是事件的DOM元素。当我将事件拖动/移动到日历中的其他位置时,事件将变为红色,如果我检查事件对象,它现在的颜色设置为红色。因此,问题是为什么它不在第一次渲染时应用,但在后续渲染(即移动后)时应用颜色?尝试使用颜色而不是eventColor event.Color=“#B22222” 使用此代码
$('#calendar').fullCalendar('renderEvent', {
id : 99,
title : 'Some event',
start : y + '-' + m + '-28',
color : 'red'
}, true);
对我来说太棒了 这是完整的代码:
function addTestEvents() {
var d = new Date();
var y = d.getFullYear();
var m = d.getMonth() + 1;
if (m < 10)
m = '0' + m;
$('#calendar').fullCalendar('renderEvent', {
id : 99,
title : 'Some event',
start : y + '-' + m + '-28',
color : 'red'
}, true);
}
函数addTestEvents(){
var d=新日期();
变量y=d.getFullYear();
var m=d.getMonth()+1;
如果(m<10)
m='0'+m;
$(“#日历”).fullCalendar('renderEvent'{
id:99,
标题:"一些事件",,
起点:y+'-'+m+'-28',
颜色:“红色”
},对);
}
编辑2:fc事件外观类的一些新更改。。。它现在是唯一的fc活动,所以样式不应该是一个问题。请在这里查看作者的笔记
编辑1:可能不完全是一个bug
最好的方法是在事件对象中设置类名,并将其添加到“fc event skin”类找到的元素中。但是,您添加的类将稍后出现在css中,并且颜色不会优先,因此您必须使用!重要的。这也保留了“假”圆角
将此方法连接到日历上
eventRender:
function (event, element, view) {
element.find('.fc-event-skin').addClass(event.className.join(' '));
}
这在您自己的样式表中
.redGray
{
border-color: DarkGray !important;
background-color: LightGray !important;
color: red !important;
}
原始答复:
我认为这是渲染代码中的一个小错误。元素参数是一个jQuery对象,因此您可以根据自定义事件数据修改它。如果设置元素的样式和文本,它将使用您设置的颜色进行渲染;但是,在我看来,其他样式从元素中删除,例如圆角以及时间和文本的格式
eventRender:
function (event, element) {
if (event.LeadId != null) {
element.css('color', 'blue');
element.css('background-color', 'yellow');
element.text(element.text);
}
我相信这是一个错误,至少在某种程度上。 问题是在
fullcalendar.js
中的renderEvents
中,在函数setSkinCSS
之后调用EventRender
回调。因此,对元素颜色的任何更改在下次渲染之前都不会反映出来
我怀疑修复是否容易,但我确实认为这是一个bug。在我看来,RenderEvent
回调应该很早就完成,当然应该在HTML生成之前完成
(我的解决方法是尽量在fullcalendar调用之前设置元素的颜色-即不使用fullcalendar的EventRender回调设置颜色)编辑#已接受的答案中有2条提到不再需要.fc事件外观,但代码段尚未更新
你现在可以说:
$('#calendar').fullCalendar({
eventRender: function(event, element) {
if (event.SomeBool) {
element.addClass('black-background');
}
}
});
在样式表中的某个地方,您有:
.black-background {
color: white !important;
background-color: black !important;
border-color: black;
}
还有维奥拉!如果您的某些事件将SomeBool设置为true,则它们将具有黑色背景和白色文本。我尝试了此方法,但无效。事实上,该属性甚至不存在于事件对象上。事件对象具有服务器上的所有my属性。有什么想法吗?我已经为我的问题添加了一个更新。谢谢。是的,.fc事件皮肤类是关键。类似于:var block=$(element.find(“.fc事件皮肤”);然后只需添加类。我甚至不需要这个!重要的css属性。