2

在我的网站上使用 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函数。但是,它们没有出现在日历上。

4

1 回答 1

2

看起来很奇怪,我尝试过实验并发现了同样的问题。当我们尝试渲染它时,fullcalendar 日历返回的事件对象没有显示,但是如果我们将事件对象简化为它的基本属性或删除“源”键,事件就会正确渲染。

    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 也不是强制性的。

演示

希望这对您有所帮助。

于 2013-04-10T06:31:15.207 回答