Я добавил бутстраповскую 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')
Я думаю, что я посмотрел в 'viewRender', и возникла проблема с ним, но это довольно давно. Я посмотрю, разрешит ли он его, и если да, примите ваш ответ. – stex