我正在更新应用以使用最新版本的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')
我是否需要更改日历对象的定义或调用方式?
答案 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()
{
...
})();
也许这有帮助。