改变slotMinutes

时间:2011-12-24 01:42:39

标签: javascript jquery fullcalendar

我只显示最初提出20分钟slotMinutes的日历。我试图允许用户在运行中更改为10分钟slotminin。

我有一个触发以下代码的按钮:

$('#calendar').fullCalendar('option', 'slotMinutes', 10);

但我无法重新绘制屏幕以反映新设置。我试过了:

$('#calendar').fullCalendar("render")
$('#calendar').fullCalendar("refetchEvents");

我正在使用agendaWeek视图,并希望它重绘并保持在同一周。

我已经倾倒了文档。我错过了什么?

2 个答案:

答案 0 :(得分:0)

由于这需要重新绘制整个日历,为什么不只是从视图中删除旧的#calendar实例并使用新的slotMinutes选项重新加载完整的日历?您可以使用getView()函数获取当前视图的当前view.start / view.end和view.name(http://arshaw.com/fullcalendar/docs/views/View_Object/)。 http://arshaw.com/fullcalendar/docs/views/getView/

然后在您重新绘制日历调用'goToDate'并使用上面的'开始'日期/时间更改为上次使用的日期。

它很脏但是有效。

答案 1 :(得分:0)

您无法即时更改fullcalendar的选项。目前不支持它。无论如何,唯一的方法是重建整个对象。

关于此增强功能的讨论是here

我根据我的需要在github做了一个脏叉子,它可能适合你。

我在这里粘贴了差异(更新你的fullcalendar.js):

function option(name, value) {
    if (value === undefined) {
        return options[name];
    }
    if(options[name] === value)
        return;
    options[name] = value;
    if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') {
        updateSize();
    }
    else {
        options.events = options.backupEvents;
        $(element).fullCalendar('destroy');
        $(element).fullCalendar(options);            
    }
}