是否有任何方法将侦听器附加到FullCalendar,该侦听器将在当前查看的日期更改时触发,即,如果您在"月"视图中,则转到下一个月将在该月的第一天触发超过"日期"的事件,在"周"视图、"日"视图等中更改周也是如此。
唯一接近此值的公开侦听器是dayClick回调,但这不好,因为它只在用户在实际一天的单元格中单击时触发,而不是在标题栏中按下Next/prev/today控件时触发。
我希望此功能能够将FullCalendar中当前查看的月份与ExtJS日期选择器组件同步,因此,如果在FullCalendar中将查看的月份更改,则会更新日期选择器以显示相同的月份。(想想谷歌日历的用户界面,左上角的"迷你日历"是日期选择器)。
票据,
我知道这个问题很古老,但我需要一个解决方案,我想我会在这里为其他人发布它。我自己解决了这个问题,将viewDisplay
事件附加到我的日历中(此事件在FullCalendar的v2中被删除,可以使用viewRender
)。
$("#calendar").fullCalendar({
viewDisplay: function (element) {
}
});
一旦您有权访问元素参数,就可以使用element.start
或element.visStart
获取日期。如果您在月份视图中,start将为您提供查看月份的第一天,visStart将为您显示月份的第一个可见日期
我就是这样做的:
$("#calendar").fullCalendar({
viewRender: function(view, element){
var currentdate = view.intervalStart;
$('#datepicker').datepicker().datepicker('setDate', new Date(currentdate));
}
});
在月份视图中,intervalStart
将返回FullCalendar上显示的月份的第一天,而不是第一个可见的日期,通常是上个月底附近的一天。
对于FullCalendar v4(撰写本文时的最新版本),正确的回调是:
viewSkeletonnder(文档)
function( info )
当初始视图呈现或用户更改视图,但在datesReturn回调触发之前,这是当所有日期/时间单元都已呈现时的回调。
日期回复(文档)
function( info )
这在viewSkeletonSender回调之后但在eventRender回调。
在V5中,您必须使用datesSet而不是datesReturn。
现在确实是一个古老的问题,但在FullCalendar 4中,datesRender
回调可能是您想要的。根据文档,这是触发的";当已经呈现了一组新的日期"时;在实践中,无论何时您导航到前一天/下一天/周/月,或使用日期选择器或";今天"按钮执行此操作。
示例用法:
$("#calendar").fullCalendar({
datesRender: function (info) {
alert("The first date on display is: " + info.view.activeStart);
}
});
eventDrop函数用于获取日期更改的数据。下面的例子对我来说很好。我使用的是完整日历版本(3.8.0)
$('#calendar').fullCalendar({
header: {
left: 'prev,next today, prevYear,nextYear',
center: 'title',
right: 'month'
},
buttonText: {
month: 'month',
week: 'week',
day: 'day'
},
navLinks: true,
editable: true,
droppable: true,
events: [
{
title: 'All Day Event',
start: '2022-06-01',
color: '#257e4a'
},
{
title: 'Long Event',
start: '2022-06-07',
end: '2022-06-10'
}
],
eventDrop: function (event, delta, revertFunc) {
alert(event.title + " was dropped on " + event.start.format());
if (!confirm("Are you sure about this change?")) {
revertFunc();
}
}
});
我在angular中使用这个库,并使用适当的angular包装器:@fullcalendar/angular":"5.8.0";。
在此版本中,CalendarOptions对象包含回调方法"datesSet",每次更改当前月份视图时都会调用该方法,并发送有关当前月份视图的所有正确信息。方法也在初始月份视图渲染时调用。
视图组件示例:
<full-calendar #calendar [options]="calendarOptions"></full-calendar>
正确的ts对象:
calendarOptions: CalendarOptions = {
initialView: 'dayGridMonth',
datesSet: (data => {
console.log('datesSet: ' , data);
})
};
对于Fullcalendar V4,
document.getElementById('my-button').addEventListener('click', function() {
var date = calendar.getDate();
alert("The current date of the calendar is " + date.toISOString());
});