2013-04-13 2 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 остаются открытыми, когда я изменить вид календаря (например, изменить месяц или на макет недели/дня). Поскольку popovers привязаны к .fc-event div/span в календаре, мне нужно получить доступ к этим элементам DOM для запуска .popover('destroy').

Всякий раз, когда меняется вид полного календаря, старые DOM-Elements заменяются на новые для нового представления, поэтому мне нужно будет получить к ним доступ до того, как представление будет фактически изменено. К сожалению, есть только обратные вызовы для загрузки событий (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/

С док

viewRender

Вызывается, когда оказывается новая дата-диапазона, или когда тип вида переключатели. функция (вид, элемент) представляет собой объект «Вид» для нового вида . element - элемент jQuery для контейнера нового вида .

Этот обратный вызов активируется, когда пользователь меняет вид, или , когда вызывается какой-либо из методов навигации по дате.

Этот обратный вызов вызывается после того, как представление было полностью отображено, , но до того, как события были визуализированы (см. Также eventAfterAllRender).

+0

Я думаю, что я посмотрел в 'viewRender', и возникла проблема с ним, но это довольно давно. Я посмотрю, разрешит ли он его, и если да, примите ваш ответ. – stex

Смежные вопросы