2013-04-13 18 views
5

我加引導popovers到上依次打開日曆事件: 回調改變

eventClick: (event, jsEvent, view) -> 
    if event.ajaxUrl? 
    elem = jQuery(@) 
    elem.popover('destroy') 

    jQuery.ajax({url: event.ajaxUrl}) 
    .done (result) -> 
     elem.popover(
     placement: 'top' 
     html: true 
     trigger: 'manual' 
     title: moment(event.start).format('dddd, DD. MMMM YYYY - HH:mm') 
     content: result 
     container: 'body') 

     elem.popover('show') 

我的問題是,這些popovers繼續開放,當我改變日曆視圖(如更改月份或周/日佈局)。由於彈出窗口綁定到日曆內的div/span,我需要訪問這些DOM元素才能運行.popover('destroy')

每當fullCalendar視圖發生更改時,舊的DOM元素將被替換爲新視圖的元素,所以在實際更改視圖之前,我必須先訪問它們。不幸的是,只有回調事件加載(loading發生在視圖更改後)和viewDisplay(相同,但您獲得新視圖)。

爲了確保我理解正確viewDisplay,我增加了一個小測試,它總是給我的日曆「0」(數據選擇器來自jquery data selector

viewDisplay: (view) -> 
    alert(jQuery('.fc-event:data(popover)').size()) 

有沒有辦法掛接到日曆過程每次視圖都要更改 - 但在視圖實際更改之前?

編輯

現在我只是破壞popovers一旦鼠標移動到任何日曆按鈕(如綁定到click將視圖改變後執行),但這種解決方案僅僅是一個解決方法

jQuery('.fc-button').on 'mouseover',() -> 
    jQuery('.fc-event:data(popover)').popover('destroy') 

回答

3

我認爲你正在尋找http://fullcalendar.io/docs/display/viewRender/

從DOC

viewRender

當一個新的日期範圍呈現觸發,或者當視圖類型 開關。函數(視圖,元素)視圖是 新視圖的視圖對象。元素是新的 視圖的容器的jQuery元素。

此回調將在用戶更改視圖時觸發,或者在任何日期導航方法被調用時觸發 。

回調將在視圖完全呈現後觸發, 但在事件呈現之前觸發(另請參閱:eventAfterAllRender)。

+0

我想我研究過'viewRender',並且出現了一個問題,但是很久以前。我會看看它是否解決了它,如果是的話,接受你的答案。 – stex