2011-06-20 63 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