切换fullcalendar视图时重新获取事件

Pau*_*l W 3 jquery fullcalendar

我在我的日历中使用了3个视图:month,agendaWeek和agendaDay.添加事件后,我调用refetchEvents来显示新事件.如果我从agendaWeek或agendaDay添加一个事件,那么重新获取当然会抓住一周或一天的事件.如果我然后切换到月视图,我只有一周或一天的事件.

我已经尝试在viewDisplay上添加refetchEvents.这个问题是它在初始加载时运行,导致所有事件的重复.有没有办法可以阻止在日历加载期间调用refetchEvents?

切换视图时是否还有其他方法可以强制重新获取?

小智 13

创建fullcalendar时,只要视图发生更改,就会触发viewDisplay方法.从逻辑上讲,您可以将其用作viewChanged事件.例如:

$('#calendar').fullCalendar({
    ... 
    viewDisplay: function(view) { alert('viewDisplay(' + view + ')'); }
});
Run Code Online (Sandbox Code Playgroud)

看来,从版本开始1.6.3,使用的正确回调是viewRender

$('#calendar').fullCalendar({
    ...
    viewRender: function(view, element) { alert('new view: ' + view.name); }
});
Run Code Online (Sandbox Code Playgroud)


nai*_*sts 6

对于全日历库本身的增强听起来是一个好主意 - 库可以为"viewChanged"甚至"viewChanging"事件提供回调函数.这样的事情确实缺失了,因为,如果你需要创建"AJAX深层链接",你还需要知道视图何时发生了变化.

更新:如果在添加事件后更改日历的"lazyFetching"选项http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/会发生什么?