fullcalendar 4,日历完全渲染后的回调

时间:2019-06-05 13:56:13

标签: javascript fullcalendar fullcalendar-4

Fullcalendar版本3曾经具有一个回调函数,一旦所有事件都呈现,该函数便会触发。我会用这个:

eventAfterAllRender: function( view ) { 
    load_call_list();
}

load_call_list是我根据某些事件的状态对它们进行计数的功能。它还会查询我的数据库以获取其他信息。

使用全日历4,一旦日历已完全加载并且所有事件都已呈现,我想调用该函数。这就是我的日历现在如何初始化...

<script>
document.addEventListener('DOMContentLoaded', function() {
  var calendar_full = document.getElementById('calendar_full');
  var calendar = new FullCalendar.Calendar(calendar_full, {
        height: 700,
        selectMirror: true,
        events: {
            url: 'ajax_get_json.php?what=location_appointments'
        },
  ....

我想我对javascript的缺乏理解限制了我对日历事件全部完全加载时可以捕获的位置的了解。

我考虑过使用eventrender,但是我也不希望每次都使用该函数查询数据库时触发load_call_list。

我尝试使用jquery $(document).ready(function(){}),但在事件呈现之前就触发了。

有关如何实现此目标的任何建议?

1 个答案:

答案 0 :(得分:0)

好,那呢?我可以使用加载功能。日历加载完成后,我可以调用load_call_list函数。我正在使用bool变量来阻止每次加载日历时都不会触发它,而不会刷新页面(例如,循环数月或数周时)。

第一次加载页面时,我有一个名为initial_load = true的变量。当日历完成“加载”后,如果这是真的,那么我将调用函数并将我的initial_load设置为false,这样它就不会像我之前解释的那样触发。

<script>
//set initial_load so when the calendar is done loading, it'll get call list info
var initial_load = true;

document.addEventListener('DOMContentLoaded', function() {


    var calendar1 = document.getElementById('calendar_mini');
    var calendar_mini = new FullCalendar.Calendar(calendar1, {
       ....
       ....
       loading: function(bool) {

        if (bool) {
            $('.loader').show();
            $('#show_cancelled_appts').hide();
            $('#show_rescheduled_appts').hide();
            $('#print_calendar').hide();
        } else {
            $('.loader').hide();
            $('#show_cancelled_appts').show();
            $('#show_rescheduled_appts').show();
            $('#print_calendar').show();

            //once it's done loading, load call list with current date stuff; set 
            initial_load = false so it doesn't keep loading call list when calendar changes while cycling months/weeks/etc
                var today = moment().format('YYYY-MM-DD');
                if (initial_load) {
                    load_call_list(today);
                    initial_load = false;
                }


        }
 },

它确实有效!有什么想法吗?这样可以编程吗?到目前为止,我还没有看到任何不利之处。