我正在尝试通过 viewRender 上的 ajax 请求根据数据库计划更改完整日历中的 minTime,但它进入了一个循环。
我的日历的一部分选项:
var calendarOptions = {
header: {
left: ' today',
center: 'prev,title,next',
right: 'agendaWeek,resourceDay'
},
defaultView: 'resourceDay',
视图渲染:
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 响应是 '08:00:00',所以那里没有问题;
测试过这个,但我相信你的问题来自破坏fullCalendar并重新设置它。本质上,发生的情况是你的日历加载并且视图被渲染,然后你发出ajax请求,销毁日历,创建一个再次触发viewRender的新日历等等。
success: function (response) {
$('#calendar').fullCalendar("destroy");
$("#calendar").fullCalendar(...
您可以在初始化日历之前加载 minTime 和 maxTime(使用 ajax 调用从数据库中获取值,并且仅在从后端检索值时才初始化日历,以便您可以将它们作为选项传递给初始化)或在不同的事件中更改它们的值(不是 viewRender)
您还可以做的是在等式中添加一个变量并有条件地启动 AJAX - 如果日历没有使用新的 minTime 和 maxTime 重建自身。