Fullcalendar minTime ajax

时间:2016-03-17 09:22:15

标签: ajax fullcalendar

我试图通过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'所以那里没有问题;

1 个答案:

答案 0 :(得分:1)

我没有测试过这个,但我相信你的问题来自于破坏fullCalendar并重新设置它。基本上,会发生的是您的日历加载并呈现视图,然后您发出ajax请求,销毁日历,创建一个再次触发viewRender的新日历,依此类推。

success: function (response) {
            $('#calendar').fullCalendar("destroy");
            $("#calendar").fullCalendar(...

您可以在初始化日历之前加载minTime和maxTime(使用ajax调用从数据库获取值,并仅在从后端检索值时初始化日历,以便您可以将它们传递给初始化为选项)或在不同的事件(不是viewRender)中更改其值

你还可以做的是在等式中添加一个变量并有条件地启动AJAX - 如果日历不在使用新的minTime和maxTime重建自身的过程中。