将Fullcalendar更新为2.2.3后的运行时错误

时间:2014-12-04 22:05:44

标签: javascript jquery-ui fullcalendar

我正在更新应用以使用最新版本的Fullcalendar(2.2.3)。我使用的是1.6.4。

更新到当前版本后,当fullcalendar尝试准备检索事件数据时,我收到运行时错误。当它遇到下面的函数时,rangeStart和rangeEnd变量为null,当应用.clone()方法时,会生成一个空引用。下面是fullcalendar.js中的函数(从第1401行开始),其中发生错误。

    function _fetchEventSource(source, callback) {
    var i;
    var fetchers = fc.sourceFetchers;
    var res;

    for (i=0; i<fetchers.length; i++) {
        res = fetchers[i].call(
            t, // this, the Calendar object
            source,
            rangeStart.clone(),  <== rangeStart is null and causes null reference error here
            rangeEnd.clone(),
            options.timezone,
            callback
        );

        if (res === true) {
            // the fetcher is in charge. made its own async request
            return;
        }
        else if (typeof res == 'object') {
            // the fetcher returned a new source. process it
            _fetchEventSource(res, callback);
            return;
        }
    }

以下是我在视图中定义日历对象的方法

        $('#calendar').fullCalendar({
        editable: false,
        eventSources: [
            {
                url: '@Url.Action("PullCalendarEvents")',
                type: 'POST',
                error: function () {
                    //alert('there was an error while fetching events!');
                    presentErrorPopup('fetch');
                }
            }
        ]
    });

日历位于标签中。这是在选择选项卡时调用以显示日历的行。

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

我是否需要更改日历对象的定义或调用方式?

2 个答案:

答案 0 :(得分:0)

我通过在视图中更改对.fullCalendar的引用顺序来解决此问题。显然,订单在版本1.6.4中并不重要,但版本2.2.3并不喜欢它。

         $('#calendar').fullCalendar({
            editable: false,
            eventSources: [
            {
                url: '@Url.Action("PullCalendarEvents")',
                type: 'POST',
                error: function () {
                    //alert('there was an error while fetching events!');
                    presentErrorPopup('fetch');
                }
            }
        ]
    });

//Moving this section to be below the above code resolved the error
    $(function () {
        $("#tabs").tabs({
            show: function (event, ui) {
                $('#calendar').fullCalendar('render');
            }
        })
    });

答案 1 :(得分:0)

在我的情况下,错过分号是原因

“类型错误:rangeStart为空”(如果缩小,则“A为空”):

var reloadCalendar = function()
{
    $('#calendar').fullCalendar('refetchEvents');
}

(function()
{
...
})();

没有错误:

var reloadCalendar = function()
{
    $('#calendar').fullCalendar('refetchEvents');
};

(function()
{
...
})();

也许这有帮助。