我试图让fullCalendar JS应用程序仅在agendaView
视图上显示事件,而不是在month
视图上。
这是我当前的代码。问题是events
函数只调用一次,在初始页面加载。根据文档(以及我使用fullCalendar的另一个站点),该函数应该在每次更改视图或日期范围时调用。
$('#calendar').fullCalendar({
events: function ( start, end, timezone, callback ) {
var view = $('#calendar').fullCalendar('getView');
console.log(view.name);
if(view.name == 'agendaDay') {
$.ajax({
type: 'POST',
url: 'index.php?events=true',
data: {
start: start,
end: end
},
async: true,
success: function ( data ) {
callback(data);
}
});
}
},
dayClick: function ( date, jsEvent, view ) {
if(view.name == 'month' && jsEvent.currentTarget.className.indexOf('date-disabled') <= -1) {
$('#calendar').fullCalendar('changeView', 'agendaDay');
$('#calendar').fullCalendar('gotoDate', date);
} else if(view.name == 'agendaDay') {
var check = moment(date).format('YYYY-MM-DD');
var today = moment(new Date()).format('YYYY-MM-DD');
if(check > today) {
alert(date);
}
}
},
header: {
left: 'title',
center: '',
right: 'today month,agendaDay prev,next'
},
dayRender: function ( date, cell ) {
var check = moment(date).format('YYYY-MM-DD');
var today = moment(new Date()).format('YYYY-MM-DD');
if(check <= today) cell[0].className += ' date-disabled';
}
});
我知道这是事实,因为console.log
只记录一次,单词month
。它只在我刷新页面,第一次加载时调用。
我错过了lazyFetching
选项。这一定是v2中的一个新选项,因为我没有预料到它。
lazyFetching: false,