dodałem bootstrap popovers do wydarzeń w kalendarzu, które otwierają się po kliknięciu: oddzwaniania przed widoku kalendarza zostanie zmieniony
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')
Moim problemem jest to, że te popovers pozostać otwarty podczas zmiany widoku kalendarza (np zmienić miesiąc lub do układu tydzień/dzień). Jak popovers są zobowiązane do .fc-event
div/rozciąga się w kalendarzu, muszę uzyskać dostęp do tych elementów DOM uruchomić .popover('destroy')
.
Po zmianie widoku FullCalendar stare elementy DOM zostają zastąpione nowymi widokami, więc będę musiał uzyskać do nich dostęp, zanim widok zostanie faktycznie zmieniony. Niestety istnieją tylko wywołania zwrotne do załadunku zdarzeń (loading
która dzieje się po widok zostanie zmieniony) i viewDisplay
(taki sam, ale masz nowy widok).
Aby upewnić się, zrozumiałem viewDisplay
poprawnie, dodałem mały test do kalendarza, który zawsze daje mi „0” (dane selektor pochodzi z jquery data selector)
viewDisplay: (view) ->
alert(jQuery('.fc-event:data(popover)').size())
Czy istnieje sposób, aby podłączyć do proces kalendarza za każdym razem, gdy widok ma zostać zmieniony - ale zanim widok zostanie faktycznie zmieniony?
Edit
Na razie jestem po prostu niszcząc popovers gdy kursor myszy znajdzie się nad dowolny przycisk kalendarza (jako wiążą się click
będzie wykonywany po zmianie widoku), ale to rozwiązanie jest po prostu Obejście
jQuery('.fc-button').on 'mouseover',() ->
jQuery('.fc-event:data(popover)').popover('destroy')
Wydaje mi się, że zajrzałem do 'viewRender' i pojawił się problem z nim, ale już dawno temu. Zobaczę, czy to rozwiązuje, a jeśli tak, przyjmij swoją odpowiedź. – stex