在Fullcalendar 2上,当我在星期之间导航时,我想在垂直滚动中保持相同的时间范围。例如,在下面的图像中,我最初看的是上午12点至下午3点。但是,当我按下下一个箭头转到下周时,它将在上午8点重置。

我知道我可以更改默认的开始时间

scrollTime: "08:00:00",

但是如何使垂直时间范围“固定”到我所在的位置呢?

最佳答案

不幸的是,这不是内置功能。有一种解决方法,但是上一周/下一周您总是会有些闪烁。

var scroll = -1,
    viewNames = ['agendaWeek', 'agendaDay'];

$('#calendar').fullCalendar({
    //...
    eventAfterAllRender: function(view) {
        if(scroll > -1 && viewNames.indexOf(view.name) !== -1)
            //Use a setTimeout hack here because the scrollTime will be set after eventAfterAllRender is processed.
            setTimeout(function(){
                document.querySelector('.fc-agenda-slots').parentNode.parentNode.scrollTop = scroll;
            }, 0);
    },
    viewDestroy: function(view) {
        if(viewNames.indexOf(view.name) !== -1)
            scroll = document.querySelector('.fc-agenda-slots').parentNode.parentNode.scrollTop;
    }
    //...
});

jsfiddle

该代码适用于FullCalendar v2。假定滚动div是.fc-agenda-slots div父级的父级。

10-06 12:20