2013-04-13 8 views
5

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') 

Odpowiedz

3

myślę szukasz http://fullcalendar.io/docs/display/viewRender/

Od doc

viewRender

uruchamiany, kiedy nowy termin zasięgu staje lub gdy typ widoku przełączników. Widokiem funkcji (widok, element) jest widok obiektu dla nowego widoku . element jest elementem jQuery dla kontenera nowego widoku .

Ten wywołanie zwrotne zostanie wywołane, gdy użytkownik zmieni widok, lub po wywołaniu dowolnej metody nawigacji po dacie.

Ten wywołanie zwrotne zostanie wywołane po pełnym renderowaniu widoku, ale przed wygaśnięciem zdarzeń (zobacz także: eventAfterAllRender).

+0

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

Powiązane problemy