首页 > 解决方案 > 使用 addEvent 添加的事件,不要采用其资源的颜色

问题描述

我正在使用 FullCalendar V5,我有一个侧边栏显示我在日历上显示的资源。在日历的第一次加载时,我添加了几个资源及其相关事件,一切正常,我可以看到事件并具有它们资源的颜色。

然后,通过单击侧边栏上的资源,我可以删除资源和相关事件,或者相反,我可以添加资源和相关事件。我分别使用 addResource 和 addEvent 方法动态添加资源和事件。这是我的问题,资源和事件添加得很好,但事件仍然是蓝色的,即使事件的 resourceId 属性是资源的 id,它们也不会采用资源的颜色......(下面的截图)。

我通过使用一些 eventSource 对象而不是简单事件来尝试相同的过程,但我不知道它为什么起作用,新添加的事件具有正确的颜色......但我不想使用这个解决方案,只是因为我不知道如何将事件从一个事件源移动到另一个事件源...

知道为什么 addEvent 似乎没有正确链接事件和资源吗?

以下是删除和添加一个资源及其事件的两个函数:

function FMP_RemoveResource(id){
    var events = calendar.getResourceById(id).getEvents();
    events.forEach( event => {
                                                 event.remove();
                               }
    );

    calendar.getResourceById(id).remove();
};


function FMP_AddEvent(strResource,strEvents){
    var resource = JSON.parse(strResource),
          events = JSON.parse(strEvents);

     calendar.addResource( resource );

     events.forEach( event => {
                                                  calendar.addEvent(event);
                                }

     );
};

这是 strResource 和 strEvents 的示例:

资源

{
    "eventColor" : "#FFA500",
    "id" : "EFC9E5DC-408E-4B54-81D4-BA46CF42E0F5",
    "title" : "Calendrier 2"
}

字符串事件

[
    { 
        "end":"2020-08-19 16:00:00",
        "extendedProps":
        {
            "timeBackgroundColor":""
        },
        "id":"CAD946CD-6491-4F5E-AC33-D668A8D54D02",
        "resourceId":"EFC9E5DC-408E-4B54-81D4-BA46CF42E0F5",
        "start":"2020-08-19 10:45:00",
        "title":"Nouvel événement"
    },
    {
        "end":"2020-08-20 13:45:00",
        "extendedProps":
        {
            "timeBackgroundColor":""
        },
        "id":"9ABB7423-74B3-4A16-B098-CB04421386D8",
        "resourceId":"EFC9E5DC-408E-4B54-81D4-BA46CF42E0F5",
        "start":"2020-08-20 11:30:00",
        "title":"Nouvel événement"
    }
]

第一步:日历首次加载

在此处输入图像描述

在此处输入图像描述

标签: javascriptcssfullcalendarfullcalendar-schedulerfullcalendar-5

解决方案


推荐阅读