2013-04-13 66 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