我试图通过viewRender上的ajax请求根据数据库计划更改fullcalendar中的minTime,但它进入循环。
我的calendarOptions的一部分:
var calendarOptions = {
header: {
left: ' today',
center: 'prev,title,next',
right: 'agendaWeek,resourceDay'
},
defaultView: 'resourceDay',
viewRender:
viewRender: function(view, element){
var curDate = ($('#calendar').fullCalendar('getDate')).format('d-DD-MM').split('-');
var curWeekDay = curDate[0];
var curMonthDay = curDate[1];
var curMonth = curDate[2];
$.ajax({
url: 'calendar/getBusinessHours',
type: 'GET',
data: {
'day': curWeekDay,
"_token": $('body').find( 'input[name=_token]' ).val()
},
success: function (response) {
$('#calendar').fullCalendar("destroy");
$("#calendar").fullCalendar(
$.extend(calendarOptions, {
defaultDate: currentDate,
minTime: response[0].open_time+':00',
maxTime: response[0].close_time+':00'
})
);
}
});
},
ajax回复是' 00:00:00'所以那里没有问题;
答案 0 :(得分:1)
我没有测试过这个,但我相信你的问题来自于破坏fullCalendar并重新设置它。基本上,会发生的是您的日历加载并呈现视图,然后您发出ajax请求,销毁日历,创建一个再次触发viewRender的新日历,依此类推。
success: function (response) {
$('#calendar').fullCalendar("destroy");
$("#calendar").fullCalendar(...
您可以在初始化日历之前加载minTime和maxTime(使用ajax调用从数据库获取值,并仅在从后端检索值时初始化日历,以便您可以将它们传递给初始化为选项)或在不同的事件(不是viewRender)中更改其值
你还可以做的是在等式中添加一个变量并有条件地启动AJAX - 如果日历不在使用新的minTime和maxTime重建自身的过程中。