lazyFetching 在 fullcalendar 插件中不起作用
lazyFetching does not work in fullcalendar plugin
这是我的完整日历定义:
$('#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', 'Mar', '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 来显示更改。当我通过全日历导航按钮更改月份时调用它。
有什么帮助吗?
when I close the dialog box, change some event and then open the
dialog box again, the /my/url url is not called again
...我认为这是因为这样做不会导致 fullCalendar 重新加载,或由于日期更改而获取新事件。这并不是说 lazyFetching: false
不起作用,而是你没有做任何会触发提取的事情。
您可以通过调用 refetchEvents 方法手动触发它以获取新事件。
例如
$('[data-toggle="calendar"]').fullCalendar("refetchEvents");
建议您在重新打开对话框时调用该函数
另外请确保您不会在每次打开对话框时都重新创建日历 - 这不是必需的,而且可能会导致额外的问题。检查它是否存在——如果不存在,则创建它,如果存在,则只需重新获取事件即可。如果日历已被隐藏,您可能会发现您还需要重新呈现它 - 有关详细信息,请参阅 render method。
这是我的完整日历定义:
$('#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', 'Mar', '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 来显示更改。当我通过全日历导航按钮更改月份时调用它。
有什么帮助吗?
when I close the dialog box, change some event and then open the dialog box again, the /my/url url is not called again
...我认为这是因为这样做不会导致 fullCalendar 重新加载,或由于日期更改而获取新事件。这并不是说 lazyFetching: false
不起作用,而是你没有做任何会触发提取的事情。
您可以通过调用 refetchEvents 方法手动触发它以获取新事件。
例如
$('[data-toggle="calendar"]').fullCalendar("refetchEvents");
建议您在重新打开对话框时调用该函数
另外请确保您不会在每次打开对话框时都重新创建日历 - 这不是必需的,而且可能会导致额外的问题。检查它是否存在——如果不存在,则创建它,如果存在,则只需重新获取事件即可。如果日历已被隐藏,您可能会发现您还需要重新呈现它 - 有关详细信息,请参阅 render method。