Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fullcalendar不';使用eventRender时不渲染颜色_Fullcalendar - Fatal编程技术网

Fullcalendar不';使用eventRender时不渲染颜色

Fullcalendar不';使用eventRender时不渲染颜色,fullcalendar,Fullcalendar,当我设置fullCalendar并设置eventRender函数回调时,我想根据LeadId是否为null来设置事件的颜色。但这似乎不起作用,即使文件上说: 有没有办法根据数据将事件颜色设置为更改 calendar = $('#dayview').fullCalendar({ .... timeFormat: 'HH:mm', columnFormat: { agendaDay: 'dddd

当我设置fullCalendar并设置eventRender函数回调时,我想根据LeadId是否为null来设置事件的颜色。但这似乎不起作用,即使文件上说:

有没有办法根据数据将事件颜色设置为更改

 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属性。