0

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

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

load_call_list 是我创建的一个函数,用于根据某些事件的状态对其进行计数。它还查询我的数据库以获取其他信息。

使用 fullcalendar 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(){}) 但在事件呈现之前触发。

关于如何做到这一点的任何建议?

4

1 回答 1

1

好的,那么这个怎么样?我可以使用加载功能。日历加载完成后,我可以调用 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;
                }


        }
 },

它确实有效!对此有什么想法?这样编程好吗?到目前为止,我没有看到任何不利因素。

于 2019-06-06T03:06:25.923 回答