我在日历中使用了 3 个视图:月、议程周和议程日。添加事件后,我调用 refetchEvents 来显示新事件。如果我从议程周或议程日添加事件,则重新获取当然会获取一周或一天的事件。如果我然后切换到月视图,我只有一周或一天的事件。
我尝试在 viewDisplay 上添加 refetchEvents。这样做的问题是它在初始负载上运行,这会导致所有事件的重复。有没有办法可以阻止在日历加载期间调用 refetchEvents?
切换视图时还有其他方法可以强制重新获取吗?
我在日历中使用了 3 个视图:月、议程周和议程日。添加事件后,我调用 refetchEvents 来显示新事件。如果我从议程周或议程日添加事件,则重新获取当然会获取一周或一天的事件。如果我然后切换到月视图,我只有一周或一天的事件。
我尝试在 viewDisplay 上添加 refetchEvents。这样做的问题是它在初始负载上运行,这会导致所有事件的重复。有没有办法可以阻止在日历加载期间调用 refetchEvents?
切换视图时还有其他方法可以强制重新获取吗?
创建 fullcalendar 时,会在视图更改时触发 viewDisplay 方法。从逻辑上讲,您可以将其用作 viewChanged 事件。例如:
$('#calendar').fullCalendar({
...
viewDisplay: function(view) { alert('viewDisplay(' + view + ')'); }
});
看来,从版本1.6.3
开始,要使用的正确回调是viewRender
$('#calendar').fullCalendar({
...
viewRender: function(view, element) { alert('new view: ' + view.name); }
});
对 fullcalendar 库本身进行增强听起来是个好主意——该库可以为“viewChanged”甚至“viewChanging”事件提供回调函数。确实缺少这样的东西,因为如果您需要创建“AJAX 深度链接”,您还需要知道视图何时更改。
更新:如果在添加事件后更改日历的“lazyFetching”选项http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/会发生什么?
这不是一个完美的主意,但只是添加了一个替代方案......
$('.fc-month-button').click(function () {
});
$('.fc-agendaWeek-button').click(function () {
});