【问题标题】:Callback before calendar view is changed更改日历视图之前的回调
【发布时间】:2013-04-06 03:41:41
【问题描述】:

我在点击打开的日历事件中添加了引导弹出框:

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

我的问题是,当我更改日历视图(例如更改月份或周/日布局)时,这些弹出框保持打开状态。由于弹出框绑定到日历中的 .fc-event divs/spans,我需要访问这些 DOM 元素才能运行 .popover('destroy')

每当更改完整日历视图时,旧的 DOM 元素都会被新视图的元素替换,因此我必须在视图实际更改之前访问它们。不幸的是,只有事件加载回调(loading 发生在视图更改后)和 viewDisplay(相同,但您获得了新视图)。

为了确保我正确理解viewDisplay,我在日历中添加了一个小测试,它总是给我“0”(数据选择器来自jquery data selector

viewDisplay: (view) ->
    alert(jQuery('.fc-event:data(popover)').size())

有没有办法在每次更改视图时挂接到日历进程 - 但在视图实际更改之前?

编辑

现在我只是在将鼠标移到任何日历按钮上时销毁弹出框(因为绑定到 click 将在视图更改后执行),但此解决方案只是一种解决方法

jQuery('.fc-button').on 'mouseover', () ->
    jQuery('.fc-event:data(popover)').popover('destroy')

【问题讨论】:

    标签: fullcalendar


    【解决方案1】:

    V3

    我想你在找http://fullcalendar.io/docs/display/viewRender/

    来自文档

    视图渲染

    在呈现新的日期范围或视图类型时触发 开关。 function(view, element) 视图是视图对象 新观点。 element 是新的容器的 jQuery 元素 查看。

    这个回调会在用户改变视图时触发,或者 调用任何日期导航方法时。

    这个回调会在视图完全渲染后触发, 但是,在事件被渲染之前(另见:eventAfterAllRender)。

    更新

    V4 从 viewRender 重命名为 datesRender https://fullcalendar.io/docs/v4/datesRender

    V5 从 datesRender 重命名为 datesSet https://fullcalendar.io/docs/datesSet

    【讨论】:

    • 我想我查看了viewRender 并且有问题,但这是很久以前的事了。我会看看它是否解决了它,如果可以,请接受您的回答。
    • 在 v5 中你想要fullcalendar.io/docs/datesSet
    【解决方案2】:

    在 V4 中,viewRender 已被弃用,请查看发行说明,现在它们有:

    “viewSkeletonRender”回调,在挂载新视图时触发,它接收到一个包含很多好东西的视图对象。

    “viewSkeletonDestroy”回调,在旧视图即将卸载之前触发。

    --

    另外,认为可能无法直接回答问题,您可以使用“datesRender”回调。我需要的是在上一个、下一个或视图更改时运行一个函数。 (我必须根据日期范围和观看次数计算事件类型的总小时数)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 2014-07-23
      • 2020-05-06
      • 1970-01-01
      • 2011-08-03
      相关资源
      最近更新 更多