从外部函数中过滤 Fullcalendar 4
Filter Fullcalendar 4 from external function
我想使用 fullcalendar 版本 4 从外部函数过滤日历。但我似乎无法访问日历实例。有人知道我该怎么做吗?
我认为需要使用:var mycalendar = calendar.view;
目前我可以过滤,但我必须重新创建日历。我想使用加载的原始日历并简单地刷新结果。
function CalendarModalFilter() {
var post = $('#calendar_filter_form').serialize();
let searchParams = new URLSearchParams(post);
var calendarEl = document.getElementById('kt_calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['interaction', 'dayGrid', 'timeGrid', 'list'],
});
NotifyPage('Filtered Calendar!', 'success');
var FilterSource = {
url: './demo2/contents/calendar/get.php',
method: 'POST',
extraParams: {
source: searchParams.get("calType")
}
};
var eventSources = calendar.getEventSources();
var len = eventSources.length;
for (var i = 0; i < len; i++) {
eventSources[i].remove();
}
calendar.addEventSource(FilterSource);
calendar.refetchEvents();
calendar.render();
};
这是日历初始化的一部分:
var initCalendar = function() {
var todayDate = moment().startOf('day');
var YM = todayDate.format('YYYY-MM');
var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD');
var TODAY = todayDate.format('YYYY-MM-DD');
var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD');
var calendarEl = document.getElementById('kt_calendar');
var containerEl = document.getElementById('kt_calendar_external_events');
var Draggable = FullCalendarInteraction.Draggable;
new Draggable(containerEl, {
itemSelector: '.fc-draggable-handle',
eventData: function(eventEl) {
return $(eventEl).data('event');
}
});
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
eventSources: [fcSources.planificacion],
//...
如果您使用的是 vanilla fullCalendar,那么在上面的示例代码中 calendar
是 日历实例(假设变量在范围内)。
演示:https://codepen.io/ADyson82/pen/xxxbKxj - 请注意我如何使用从 new FullCalendar.Calendar
返回的日历变量调用 render()
和 getEvents()
方法。
N.B。 calendar.view
gets you the current view object 具体来说。
我想使用 fullcalendar 版本 4 从外部函数过滤日历。但我似乎无法访问日历实例。有人知道我该怎么做吗?
我认为需要使用:var mycalendar = calendar.view;
目前我可以过滤,但我必须重新创建日历。我想使用加载的原始日历并简单地刷新结果。
function CalendarModalFilter() {
var post = $('#calendar_filter_form').serialize();
let searchParams = new URLSearchParams(post);
var calendarEl = document.getElementById('kt_calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ['interaction', 'dayGrid', 'timeGrid', 'list'],
});
NotifyPage('Filtered Calendar!', 'success');
var FilterSource = {
url: './demo2/contents/calendar/get.php',
method: 'POST',
extraParams: {
source: searchParams.get("calType")
}
};
var eventSources = calendar.getEventSources();
var len = eventSources.length;
for (var i = 0; i < len; i++) {
eventSources[i].remove();
}
calendar.addEventSource(FilterSource);
calendar.refetchEvents();
calendar.render();
};
这是日历初始化的一部分:
var initCalendar = function() {
var todayDate = moment().startOf('day');
var YM = todayDate.format('YYYY-MM');
var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD');
var TODAY = todayDate.format('YYYY-MM-DD');
var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD');
var calendarEl = document.getElementById('kt_calendar');
var containerEl = document.getElementById('kt_calendar_external_events');
var Draggable = FullCalendarInteraction.Draggable;
new Draggable(containerEl, {
itemSelector: '.fc-draggable-handle',
eventData: function(eventEl) {
return $(eventEl).data('event');
}
});
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
eventSources: [fcSources.planificacion],
//...
如果您使用的是 vanilla fullCalendar,那么在上面的示例代码中 calendar
是 日历实例(假设变量在范围内)。
演示:https://codepen.io/ADyson82/pen/xxxbKxj - 请注意我如何使用从 new FullCalendar.Calendar
返回的日历变量调用 render()
和 getEvents()
方法。
N.B。 calendar.view
gets you the current view object 具体来说。