使 fullcalendar 事件过滤在重新渲染之间保持不变

Make fullcalendar event filtering persistant between re-renderings

我有一个最初显示所有事件的完整日历,但我使用 select 来过滤事件,过滤器工作正常,但是当 callendar 重新呈现时,因为我移动到下个月它再次显示所有事件。这是我的 callendar 初始化

var calendarEl = document.getElementById('calendar');
    var calendar = new FullCalendar.Calendar(calendarEl,{
        titleFormat:{
            hour12: true
        },
        locale: '{{ (App::getLocale() == "es") ? "es" : "en" }}',
        bootstrapFontAwesome: false,
        headerToolbar: {
            left: 'prev,next today',
            center: 'title',
            right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
        },
        eventTimeFormat: {
            hour: '2-digit',
            minute: '2-digit',
            hour12: true
        },
        events:"{{ route('schedules.show', 0) }}"
    });

    calendar.render();

这是我的日历过滤:

        $('#select_coach').change(function(){

            var coach_id = $('#select_coach').val();

            source = "{{url('/schedules/show/')}}"+'/'+coach_id;

            events = calendar.getEvents();
            events.forEach(event => { event.remove()});
            calendar.addEventSource(source);

       })

使用全日历方法 getEventSources() 我得到了原始来源然后我把它放在一个变量中 let sources = calendar.getEventSources(); 然后我调用了变量上的 remove() 方法现在我只有一个来源所以每次重新渲染时只使用最后一个来源。

let events = calendar.getEvents();
events.forEach(event => { event.remove()});
let sources = calendar.getEventSources();
sources[0].remove();
calendar.addEventSource(source);