我想使用完整日历版本 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()
方法。
注:注:calendar.view
专门获取当前视图对象。