我在我的日历中使用了3个视图:month,agendaWeek和agendaDay。添加事件后,我调用refetchEvents来显示新事件。如果我从agendaWeek或agendaDay添加一个事件,那么重新获取当然会抓住一周或一天的事件。如果我然后切换到月视图,我只有一周或一天的事件。
我尝试在viewDisplay上添加refetchEvents。这个问题是它在初始加载时运行,导致所有事件的重复。有没有办法可以阻止在日历加载期间调用refetchEvents?
切换视图时是否有其他强制重新获取的方法?
答案 0 :(得分:13)
创建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); }
});
答案 1 :(得分:6)
对于全日历库本身的增强听起来是个好主意 - 该库可以为“viewChanged”甚至“viewChanging”事件提供回调函数。 这样的事情确实缺失了,因为如果你需要创建“AJAX深层链接”,你还需要知道视图何时发生了变化。
更新:如果您在添加活动后更改日历的“lazyFetching”选项http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/会怎样?
答案 2 :(得分:0)
不是一个完美的主意,只是再增加一个替代方案......
$('.fc-month-button').click(function () {
});
$('.fc-agendaWeek-button').click(function () {
});