2011-06-20 61 views
21

是否有任何方法将侦听器附加到FullCalendar,每当当前查看的日期发生更改时都会触发该侦听器,也就是说,如果您处于月视图中,下个月将触发通过日期的事件月,同样在周视图,日日视图ECT改变周。用于侦听FullCalendar“日期更改”?

接近这个的唯一暴露的侦听器是dayClick回调函数,但这不是很好,因为它仅在用户单击实际日单元格时触发,而不是例如按下Next/prev/today控件时在标题栏。

我希望此功能能够将FullCalendar中当前查看的月份与ExtJS日期选择器组件同步,因此如果查看的月份在FullCalendar中更改,则Datepicker会更新以显示同一月份。 (认为​​谷歌日历的用户界面,在左上角的“迷你日历”作为日期选择器)

回答

21

比尔,

我知道这个问题是非常古老的,但我需要一个解决方案,并想我会张贴这里为别人着想。我解决了自己的问题由viewDisplay事件连接到我的日历(此事件为removed in v2 of FullCalendarviewRender可以用来代替)。

$("#calendar").fullCalendar({ 
    viewDisplay: function (element) { 

    } 
}); 

一旦你有机会获得元素参数,您可以通过使用element.startelement.visStart获取日期。如果您在月视图中,开始将为您提供您正在查看的月份的第一天,visStart将为您提供该月的第一个可见日期

+9

根据该文件,viewDisplay现已弃用,取而代之的viewRender的。 [链接](http://arshaw.com/fullcalendar/docs/display/viewRender/) “$( “#日历”)fullCalendar({ viewRender:功能(图,元件){ } } );” – sarme

+0

不错,值得一提 –

8

这就是我的做法:

$("#calendar").fullCalendar({ 

viewRender: function(view, element){ 
     var currentdate = view.intervalStart; 
     $('#datepicker').datepicker().datepicker('setDate', new Date(currentdate)); 
    } 

    }); 

在月视图中,intervalStart将返回在FullCalendar上显示的月份的第一天,而不是第一个可见的日期,通常是前一个月末的一天。

+1

我使用了eventAfterAllRender回调函数,它在渲染日历结束时调用。然后从通过的视图对象中删除... 'eventAfterAllRender:function(view){ doMyStuff(view.intervalStart.format('YYYY-MM-DD')); }' – Yorick