在我的网站上使用Fullcalendar,我有一个允许用户过滤某些事件的按钮。当他们单击按钮隐藏某些事件时,会触发这样的函数:
var hidden_elements = [];
function toggle_hidden_events(toggle) {
// remove events
if(!toggle) {
// Puts the event objects we're hiding into a global array, and also removes them from Fullcalendar (works fine)
hidden_elements = hide_elements();
}
else {
// does not work
show_events(); // we dont pass the var since its global
}
}
第一个块if(!toggle)
正常工作并隐藏正确的事件并正确地将它们分配给数组。
但是,当我拨打show_events()
时,它无法正常工作。这是函数的样子:
function show_events() {
while(hidden_elements.length > 0) {
var event = hidden_elements.pop();
$("#calendar").fullCalendar('renderEvent', event, true);
}
}
使用console.log(event)
,我已经确认有效的事件对象正在传递给renderEvent
函数。但是,他们没有出现在日历上。
答案 0 :(得分:2)
看起来很奇怪,我尝试过试验并发现同样的问题。当我们尝试渲染时,fullcalendar日历返回的事件对象没有显示,但是如果我们将事件对象简化为它的基本属性,或者删除“source”键,则事件得到正确呈现。
var myNewEvent = {
"id": removedEvt.id,
"title": removedEvt.title,
"start": removedEvt.start,
"end": removedEvt.end,
"_id": removedEvt._id,
"_start": removedEvt._start,
"_end": removedEvt._end
/*,
"source" : removedEvt.source*/
};
以下是演示链接,单击切换将切换事件。如果取消注释源键,则不会呈现事件。但是_id,_start,_end也不是强制性的。
<强> DEMO 强>
希望这会对你有所帮助。