【问题标题】:Fullcalendar recurring event exclusionFullcalendar 定期事件排除
【发布时间】:2015-10-01 08:38:40
【问题描述】:

我正在使用带有拖放外部事件和 json 数据源的 fullcalendar。 默认情况下,这些事件每周重复一次。

我现在想添加功能,使用户能够删除此重复事件的单个实例(如在谷歌日历中)。 我相信这需要某种机制来从重复事件中排除某个事件日期。

我无法在 fullcalendar 文档中找到任何支持这种开箱即用行为的内容。

我更喜欢仅客户端的解决方案。

【问题讨论】:

  • 您可以使用removeEvents函数(fullcalendar.io/docs/event_data/removeEvents)。我相信最后一行可能是您正在寻找的。假设您此时知道要删除哪个事件对象。
  • 不幸的是 Different instances of repeating events should all have the same id @Slyvain,所以这些事件几乎无法区分,我相信将它们与 removeEvents 一起使用是不可能的。
  • 它指出idOrFilter 也可以是一个函数,它为给定的事件对象返回true。如果用户点击一个事件,您就知道该对象的实例,因此可以将其发送到“idOrFilter 函数”。我从未尝试过,但这就是我将如何实现它。
  • 谢谢,我现在明白了。我会试一试。知道如何从数据源中删除事件吗?我目前正在保存从clientEvents 获得的所有事件,但我相信这仍会反映以这种方式删除的事件。
  • 我现在正在研究 slicetoad 对this question 的回答。看起来是一个可行的解决方案,但这需要大量的工作服务器端。

标签: javascript fullcalendar


【解决方案1】:

我创建了一个jsfiddle,它显示了如何显示除一个日期之外的每日并发事件。我已经包含了一个自定义属性(excludedDate)。 在您的解决方案中,您将需要包含一个名为excludedDates 的属性,其中包含一个日期数组,并且每次您想要删除单个实例时,您只需将日期添加到此属性数组中。然后,在 eventRender 中,您将遍历该数组以查看是否需要排除任何给定日期的事件。

eventRender: function(event, element, view) {

    var theDate = event.start
    var excludedDate = event.excludedDate;
    var excludedTomorrrow = new Date(excludedDate);
     //if the date is in between August 29th at 00:00 and August 30th at 00:00 DO NOT RENDER
    if( theDate >= excludedDate && theDate < excludedTomorrrow.setDate(excludedTomorrrow.getDate() + 1) ) {
        return false;
    }
    }

【讨论】:

  • 我认为是这样。
猜你喜欢
  • 1970-01-01
  • 2014-02-18
  • 2021-11-30
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多