Javascript 是否将fullcalendar滚动到当前时间?

Javascript 是否将fullcalendar滚动到当前时间?,javascript,jquery,ruby-on-rails,fullcalendar,Javascript,Jquery,Ruby On Rails,Fullcalendar,简单地说,有没有办法让fullcalendar滚动到周视图中的当前时间位置 如果有帮助,我正在使用Ruby on Rails和jQuery,请使用: $(“#日历”).fullCalendar('today')您的意思是希望日历以一天中的当前时间(渲染时间)为中心自动显示吗 假设您很高兴day列始终位于同一位置,agendaWeek视图中的firstHour选项可能适合您 为了进行说明,假设给定视图中Y轴上的小时数为10,则类似于: var firstHour = new Date().getU

简单地说,有没有办法让fullcalendar滚动到周视图中的当前时间位置

如果有帮助,我正在使用Ruby on Rails和jQuery,请使用:


$(“#日历”).fullCalendar('today')

您的意思是希望日历以一天中的当前时间(渲染时间)为中心自动显示吗

假设您很高兴day列始终位于同一位置,
agendaWeek
视图中的
firstHour
选项可能适合您

为了进行说明,假设给定视图中Y轴上的小时数为10,则类似于:

var firstHour = new Date().getUTCHours() - 5;
$('#calendar').fullCalendar({
  firstHour: firstHour;
});

有关视图控件的更多详细信息,请参见

我遇到了一个类似的问题,并使用此解决方案解决了它

setTimeout(function(){ // Timeout
    $(".fc-today").attr("id","scrollTo"); // Set an ID for the current day..
    $("html, body").animate({
        scrollTop: $("#scrollTo").offset().top // Scroll to this ID
    }, 2000);
}, 500);    

在v2上,这一点已发生变化,以下是在新版本中如何做到这一点:

$('#calendar').fullCalendar({
    defaultView: 'agendaWeek',
    scrollTime: '09:00:00'
});

这是我用来在视图中滚动到当前时间的内容:

var scrollTime = moment().format("HH:mm:ss");
$('#calendar').fullCalendar({
    now: today,
    scrollTime: scrollTime
});
出于用户体验的目的,我四舍五入到最近的小时,这样用户可以清楚地看到日历视图的位置(时间):

var scrollTime = moment().format("HH") + ":00:00";
$('#calendar').fullCalendar({
    now: today,
    scrollTime: scrollTime
});

检查fullCalendar参数。

如果需要动态设置选项(在已初始化日历之后) 那么正确的方法就是使用link


对于fullcalendar@^4.3.0,我使用了带有日历渲染范围开始的函数:

calendar.state.dateProfile.renderRange.start
所以它对我来说是这样的:

    var calendarEl = document.getElementById('scheduler');
    var calendar = new FullCalendar.Calendar(calendarEl, { ... })

    var now = new Date();
    var rangeStart = calendar.state.dateProfile.renderRange.start;

    // attention here
    calendar.scrollToTime(now - rangeStart);

顺便说一句,不管
defaultView
值是什么,它都能工作。

绝对是我想要的!不知道我是如何忽略了这一点,谢谢:)请注意,这不起作用,scrollTime还不能动态设置;
    var calendarEl = document.getElementById('scheduler');
    var calendar = new FullCalendar.Calendar(calendarEl, { ... })

    var now = new Date();
    var rangeStart = calendar.state.dateProfile.renderRange.start;

    // attention here
    calendar.scrollToTime(now - rangeStart);