1

我安装了 FullCalendar 并且运行良好,从我的数据库中提取课程。

您可以通过单击再次提交页面但通过不同标准的按钮查看不同的课程。

问题是,在重新加载页面和新内容时,它会跳回当前日期,当您在未来 3 个月查看课程时,这相当烦人!

有人知道刷新页面后如何让日历回到你所在的页面吗???

我觉得这可能与 getdate 有关,因为我得到了以下代码,但似乎无法通过 URL 将结果传递回日历设置。

$('#my-button').click(function() {
    var d = $('#calendar').fullCalendar('getDate');
    alert("The current date of the calendar is " + d);
});
4

4 回答 4

3

如果您使用jquery.cookie,您可以将当前查看的日期存储在正在查看的页面的 cookie 中,并在页面重新加载时使用该值设置 defaultDate。初始化日历时将这些作为选项传递:

defaultView: Cookies.get('fullCalendarCurrentView') || 'month',
defaultDate: Cookies.get('fullCalendarCurrentDate') || null,
viewRender: function(view) {
  Cookies.set('fullCalendarCurrentView', view.name, {path: ''});
  Cookies.set('fullCalendarCurrentDate', view.intervalStart.format(), {path: ''});
}

此代码还保存当前视图(例如月、日等...)

于 2015-06-02T01:10:42.973 回答
2

我使用了上述两者的组合。在创建、移动或调整事件大小以及 viewRender 时,我为开始日期设置了 localStorage 值,然后将该值分配给 defaultDate。

defaultDate: localStorage.getItem('Default_FullCalendar_Date'),    
viewRender: function(view) {
        localStorage.setItem('Default_FullCalendar_View', view.name);
        ...
    },

    select: function(start, due){
        localStorage.setItem('Default_FullCalendar_View', start);
        ...
    },

    eventDrop: function(event, delta, revertFunc, jsEvent, ui, view){
        localStorage.setItem('Default_FullCalendar_View', event._start._d);
        ...
    },


    eventResize: function(event, delta, revertFunc, jsEvent, ui, view){
        localStorage.setItem('Default_FullCalendar_View', event._start._d);
        ...
    }

奇迹般有效。

于 2016-10-26T22:14:39.030 回答
0

您可以使用gotoDate方法:

var d = $('#calendar').fullCalendar('getDate');
$('#calencar').fullCalendar( 'gotoDate', d.getFullYear(), d.getMonth(), d.getDate() )
于 2013-04-11T07:24:39.213 回答
0

这是完整日历版本 4 和 5 的更新答案。因为viewRender在这些版本中不再是一个选项。我想出了一种使用该loading选项的不同方法。

loading选项将为您提供一个boolean参数,说明日历是否已完成加载。在该函数中,我检查日历是否已完成加载,如果是,我将日历日期设置为localStorage. 接下来,我在 fullcalendar 对象之前创建了一个 if else 语句来检查 localstorage 项目是否存在,如果存在,我将defaultDatecalendar 对象中的选项设置为 to localStoragedate;如果没有,我只是将其设置为今天的日期。

例子:

let viewDate;
const savedDate = localStorage.getItem("calDate");
if (savedDate !== null) {
  viewDate = new Date(savedDate);
} else {
  viewDate = today();
}

const calendarElement = document.getElementById('your_calendar');

const calendar = new FullCalendar.Calendar(calendarElement, {
  defaultDate: viewDate,
  loading: function(stillLoading) {
    if (stillLoading === false) {
      // When Calendar is done loading....
      localStorage.setItem("calDate", calendar.getDate());
    }
  },
});
于 2021-11-29T17:45:41.340 回答