按下下一个/上一个按钮后如何阻止 FullCalendar 重新获取我的事件?

问题描述 投票:0回答:1

我将 FullCalendar 与 Laravel 一起使用,每次我尝试执行下一个/上一个操作时都会调用我的 Ajax 事件调用,如何防止这种情况发生?我希望它只获取一次事件,并且仅当我选中其他日历的复选框时才能将它们合并在一起。

这是我的代码:

    $(".calendar_list").each(function () {
        if (this.checked) {
            selectedCalendars.push($(this).val());
        }
    });
    
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    var calendar = new FullCalendar.Calendar(calendarEl, {
        initialView: 'dayGridMonth',
        lazyFetching: true, // tried with and without
        headerToolbar: {
            left: 'prev,next today addEventButton',
            center: 'title',
            right: 'dayGridMonth,timeGridWeek,timeGridDay'
        },
        events: {
            url: SITEURL + '/calendarsAjax',
            method: 'GET',
            extraParams: {
                calendar_ids: selectedCalendars
            },
            success: function() {
            },
            failure: function (e) {
                console.log(e);
            }
        },
    });
  calendar.render();
}

document.addEventListener('DOMContentLoaded', function() {
    getCalendar();
});

我尝试过延迟加载,它仍然出现。

javascript ajax fullcalendar
1个回答
0
投票

我同意蒂姆刘易斯的评论......你为什么要阻止这种情况?这就是它的工作原理。

您可能没有意识到的是(根据文档https://fullcalendar.io/docs/events-json-feed)fullCalendar将在每个请求中发送您的服务器“开始”和“结束”参数,代表日历上当前显示的最早和最晚日期。您的服务器应该使用这些来过滤其数据,并且仅返回落在这些日期内或重叠的事件数据。

这通常比首次加载日历时下载数据库中的每个事件要高效得多 - 因为事件列表会随着时间的推移而大幅增长,并且在大多数情况下,用户可能永远不会查看绝大多数事件他们。因此,您应该希望它只下载可能相关的事件,并在用户实际要看到它们时按需执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.