Fullcalendar 在点击月份时间周等时获取当前视图

Fullcalendar get current view on click of month time week etc

每当事件触发时,我想知道日历的当前视图,比如它是 dayGridMonthtimeGridWeektimeGridDay 还是 listWeek

我有一个 select 元素,我正在尝试更新日历上的活动。但是发生的事情是,如果我 select 列出视图并更改 select 菜单,那么整个日历将刷新为默认视图。我想将日历设置为与 selecting select 框之前相同的视图。

    calendar_view_session: function(){
        var calendar = new FullCalendar.Calendar(calendarEl, {
        plugins: ['dayGrid', 'timeGrid', 'list', 'interaction'],
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
        },

        defaultDate: moment().format('YYYY-MM-DD'),//'2019-04-12',
        navLinks: true, 
        defaultView: 'listWeek',
        eventSources: [{
                    events: function (info, successCallback, failureCallback) {
                        console.log(info);
                    },
                    ..........
            }
          ],
          ..........
  }
}



                <select name="select_meetingtype" id="select_meetingtype" class="form-control">
                    <option value="">All Sessions</option>
                    <option value="free_session">Free Sessions</option>
                    <option value="weekly_session">Classes</option>
                </select>

$('#select_meetingtype').on('change', function() {
  _this.calendar_view_session(this.value)
});

console.log(info) 仅打印日期。

要抓取当前视图,试试这个:

const views = {day: 'timeGridDay', week: 'timeGridWeek', month: 'timeGridMonth', list: 'listWeek'};
var currentView = 'listWeek';
$('#calendar_container').delegate('.fc-toolbar-chunk button', 'click', function(){
  currentView = views[$(this).text()];
  calendar_view_session();// re-initialize calendar with current selectedView
})

calendar_view_session: function(){
    var calendar = new FullCalendar.Calendar(calendarEl, {
        //
        //
        defaultView: currentView,// use global var instead of static value
        //
        //etc.

这将使用当前视图而不是重新初始化您的日历 恢复为默认值。需要委派,因为整个日历在更新事件时会被销毁并重新创建。