我正在尝试根据某个事件是否小于当前日期来删除该事件。如果特定事件小于当前日期,则应将其从完整日历中删除或隐藏。
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事件。 我的代码肯定有什么问题?
答案 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;
}
},