2013-04-09 173 views
2

在我的网站上使用Fullcalendar,我有一个允许用户过滤特定事件的按钮。当他们点击一个按钮,隐藏某些事件,这样的功能被激发: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()时,它无法正常工作。下面是函数的样子:使用console.log(event)

function show_events() { 
    while(hidden_elements.length > 0) { 
     var event = hidden_elements.pop(); 
     $("#calendar").fullCalendar('renderEvent', event, true); 
    } 
} 

,我已经验证有效的事件对象正在通过向renderEvent函数传递。但是,它们没有出现在日历上。

回答

2

看起来很奇怪,我尝试过试验并发现相同的问题。全格式日历返回的事件对象在我们尝试渲染时没有显示,但是如果我们将事件对象简化为基本属性或删除“源”键,则事件get将被正确渲染。

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

希望这有助于你。