从完整的日历中删除或隐藏事件

时间:2020-04-14 12:28:56

标签: angular fullcalendar fullcalendar-4

我正在尝试根据某个事件是否小于当前日期来删除该事件。如果特定事件小于当前日期,则应将其从完整日历中删除或隐藏。

   this.renderCalendar = new Calendar(document.querySelector('#calendar'),
{

eventDataTransform:(data: any)=>{
    data.start = data.start.toDate()// convert to date
    //data.end = data.end.toDate()
    const newDate = new Date().getDate();

    if(newDate>data.start.getDate()){

    //this.dataService.eventDelete(data.id);
         var event=this.renderCalendar.getEventById(data.id);
        console.log(event);
        console.log(data.id);
    //event.remove();
     }

    else{
      data.color="blue";
    }
    return data;

  },

}

);

我能够提出一个以上的实现。数据正在从我的数据库中获取。尽管我能够从数据中获取ID,但我总是会得到一个null事件。 我的代码肯定有什么问题?

1 个答案:

答案 0 :(得分:0)

在eventDataTransform期间,事件尚未呈现。 eventDataTransform在fullCalendar仍在处理每个传入事件时发生,但是在将它们添加到日历之前。因此,该事件在日历中尚不存在,因此无法从对getEventById的调用中返回。

我看到您想在某些情况下删除该事件。 eventDataTransform文档(https://fullcalendar.io/docs/eventDataTransform)表示:

该函数必须返回一个可解析的Event对象或false,这将 放弃事件。

因此,为解决您的问题,您可以在决定不需要该事件时仅从eventDataTransform回调中return false

例如

  eventDataTransform: (data: any) => {
    data.start = data.start.toDate() // convert to date
    const newDate = new Date().getDate();

    if(newDate > data.start.getDate()) {
      return false;
    }
    else {
      data.color="blue";
      return data;
    }
  },