我正在使用通过json调用的Fullcalendar,并且发生了一些非常奇怪的事情,这让我很伤心!无法找到解决方法。
我的标签下有我的日历。当我单击该选项卡时,日历网格会显示,但没有任何事件。如果我在下个月点击日历然后再回到上个月,则事件都会正常显示!
如果我导航到另一个页面然后返回日历页面,则会发生同样的事情。必须前往下一个和上一个加载事件。
这就是我打电话给日历的方式:
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: false,
events: "../events_calendar.php",
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
}); });
这里有什么想法吗?
感谢。
答案 0 :(得分:1)
页面加载时隐藏日历可能会出现问题。
所以你可以尝试重新报道这个事件 http://arshaw.com/fullcalendar/docs/event_rendering/rerenderEvents/
.fullCalendar( 'rerenderEvents' )
或
要确保事件正常,您应该连接refetchEvent http://arshaw.com/fullcalendar/docs/event_data/refetchEvents/
.fullCalendar( 'refetchEvents' )
当日历显示并准备好时,应该调用这些事件,而不是之前,因为它可能会遇到同样的问题。
和
我认为这已经存在问题 - 但它可以在最新版本中解决。但我现在找不到它。尝试并搜索支持
中的错误http://code.google.com/p/fullcalendar/issues/list?can=1&q=
除此之外,您将不得不尝试调整日历加载的方式等...
答案 1 :(得分:1)
您的问题可能是由于FullCalendar正在发出异步请求(这意味着日历可能会在返回数据之前加载)。因此,将其更改为进行同步请求。
而不是这个
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: false,
events: "../events_calendar.php",
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
}); });
使用类似的东西:
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: false,
eventSources: [
{
url: '../events_calendar.php',
async: false // No longer asynchronous
}
],
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
}); });
与http://arshaw.com/fullcalendar/docs/event_data/events_json_feed/
上的示例进行比较答案 2 :(得分:0)
我遇到了同样的问题(请参阅我对原帖的评论),并找出原因。 我的json事件是这样的,并且如果不被称为ajax(即json是参数'events'的值),它完全是redering:
[{id:2317,title:"test",start:"2011-06-08 09:00:00.0",end:"2011-06-08 11:00:00.0",allDay:false,url:"log/show/2317",backgroundColor: 'green'}]
然而,当通过ajaxed调用时它不起作用。为了使它工作,将你的json的属性名称放在双引号“...”之间。小心不要使用单引号,它也不起作用。我的json成为:
[{"id":2317,"title":"test","start":"2011-06-08 09:00:00.0","end":"2011-06-08 11:00:00.0","allDay":false,"url":"log/show/2317","backgroundColor": "green"}]
希望它有所帮助!