Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当必须从空数据重新绘制时,FullCalendar为空_Javascript_Jquery_Fullcalendar - Fatal编程技术网

Javascript 当必须从空数据重新绘制时,FullCalendar为空

Javascript 当必须从空数据重新绘制时,FullCalendar为空,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,我已经试着调试这个问题好几天了,但还没有取得任何进展 我正在使用最新的小提琴演示FullCalendar 我的数据集如下所示 var myDataset = { "classes": [ [{ "name": "ECEC 301 Advanced Programming for Engineers Lecture", "days": "MWF", "times": "02:00 pm - 03:20

我已经试着调试这个问题好几天了,但还没有取得任何进展

我正在使用最新的小提琴演示FullCalendar

我的数据集如下所示

var myDataset = {
    "classes": [
        [{
            "name": "ECEC 301 Advanced Programming for Engineers Lecture",
            "days": "MWF",
            "times": "02:00 pm - 03:20 pm",
            "crn": "11215"
        }, {
            "name": "ECEC 301 Advanced Programming for Engineers Lab",
            "days": "W",
            "times": "09:00 am - 10:50 am",
            "crn": "11216"
        }],
        [{
            "name": "ECEC 301 Advanced Programming for Engineers Lecture",
            "days": "MWF",
            "times": "02:00 pm - 03:20 pm",
            "crn": "11215"
        }, {
            "name": "ECEC 301 Advanced Programming for Engineers Lab",
            "days": "F",
            "times": "02:00 pm - 03:50 pm",
            "crn": "11217"
        },
        {
        "name": "SOC 101 Introduction to Sociology Lecture",
        "days": "TBD",
        "times": "",
        "crn": "11044",
        "campus": "Online",
        "enrollment": "CLOSED",
        "short_name": "SOC 101 Lecture"
        }
        ]
    ]
};
在真实代码中,
myDataset
对象通过AJAX调用动态更新

数据是通过我编写的API更新的,该API提供了结果过滤,因此用户可以设置参数来更新日历视图(这会更改
myDataset

我遇到的一个问题是,当我设置一个过滤器,使
myDataset
为空,然后取消过滤所有内容,使
myDataset
再次具有数据时,我的完整日历视图将为空,即使其中有数据,并且事件正在被推送(我已检查)

问题似乎源于
removeEvents
方法,该方法在每次日历需要呈现新事件时调用,以替换旧事件:

        // Clear all events to prepare for the next set of events.
        $('#calendar').fullCalendar('removeEvents');

        // Add events from JSON data
        $('#calendar').fullCalendar('addEventSource',
            function(start, end, timezone, callback) {
                var events = [];
                var overlap = [];
                ....
我尝试使用以下方法来切换此方法:

        // Clear all events to prepare for the next set of events.
        $('#calendar').fullCalendar('rerenderEvents');
然而,这只是在现有事件上绘制事件,因此结果是一组相互重叠的事件

我尝试了
refetchEvents
和其他一些方法。实际上,我甚至不确定它是否与
removeEvents
有关

我的问题是-我如何解决这个问题?如果问题没有像应该的那样详细,我很抱歉,但是我真的不知道如何解决为什么没有呈现事件的问题。我在上面展示的结果在技术上尽可能详细地展示了我是如何调试一切的


编辑:好的,
rerenderEvents
解决了这个问题。
rerenderEvents
的唯一问题是[在多个事件数组之间切换时]事件会显示在先前事件的顶部

再次初始化日历之前,您需要调用
销毁
日历。
为此,您可以调用
$('#calendar').fullCalendar('destroy')

在调用
destroy
事件后,设置
dataset

var myDataset = result;
最后初始化你的日历

$('#calendar').fullCalendar({...

我们如何在JSFIDLE中重新创建这个问题?我不知道,因为更新
myDataset
需要调用我的API,但它没有打开=/Re运行它不会模拟这个问题,因为很明显,您正在重新加载所有内容。我使用fullcalendar jquery插件为我的公司构建了一个调度程序。我不得不说,缺乏更新事件的方法是非常令人讨厌的。我解决这一问题的方法是删除事件,然后用$('#calendar').fullCalendar('renderEvent',eventObject,true)将它们添加回;是 啊你说得对。怎么样
.fullCalendar('destroy')
@Sushil在
addEventSource
之前拥有
destroy
只会让日历不显示=P