lazyFetching 在 fullcalendar 插件中不起作用

问题描述

这是我的全日历定义:

        $('#modal_calendar').on('shown.bs.modal',function () {
                $('[data-toggle="calendar"]').fullCalendar({
                    themeSystem: 'bootstrap4',locale: 'es',monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],dayNamesShort: ['Dom','Lun','Mié','Jue','Vie','Sáb'],header: {
                        left: 'title',center: '',right: 'prev,next today'
                    },buttonText: {
                        today: 'Hoy',month: 'Mes',week: 'Semana',day: 'Día'
                    },events: '/my/url',lazyFetching: false
                });
            });

当出现模式对话框时,我正在加载完整的日历。请注意 lazyFetching = false。我需要始终检索事件。

当我加载页面并打开模式对话框时,/my/url url 被调用,因此日历正确显示事件。我遇到的问题是,当我关闭对话框、更改某些事件然后再次打开对话框时,不会再次调用 /my/url url 来显示更改。当我通过全日历导航按钮更改月份时调用它。

有什么帮助吗?

解决方法

当我关闭对话框时,更改一些事件然后打开 再次弹出对话框,/my/url url 不再调用

...我认为这是因为这样做不会导致 fullCalendar 重新加载,或由于日期更改而获取新事件。并不是 lazyFetching: false 不起作用,而是您没有执行任何会触发提取的操作。

您可以通过调用 refetchEvents 方法手动触发它以获取新事件。

例如

$('[data-toggle="calendar"]').fullCalendar("refetchEvents");

建议您在重新打开对话框时调用此函数。

另外,请确保不要在每次打开对话框时都重新创建日历 - 这不是必需的,并且可能会导致额外的问题。检查它是否存在 - 如果它不存在,则创建它,如果存在,只需重新获取事件。如果日历已被隐藏,您可能会发现还需要重新渲染它 - 请参阅 render method 了解详情。