2012-07-19 79 views
0

我正在同步fullcalendar和Google日历,并且我注意到在周视图中,周日从0:00到12:00的事件是失踪,但仅限于那一天。如果我切换到日视图,它会每天发生。某些事件在周视图和其他日间视图中缺失,但在月视图中显示

您可以在这里看到的错误:http://www.kittikun.jp/schedule2.html

下面是页面的源代码:

<script> 
     $(document).ready(function() { 

      $('#calendar').fullCalendar({ 
       events: { url:"http://www.google.com/calendar/feeds/contact%40kittikun.jp/public/basic" }, 
       theme: true, 
       header: { 
        left: 'today prev,next', 
        center: '', 
        right: 'month,agendaWeek,agendaDay' 
       }, 
       allDaySlot: false, 
       timeFormat: "H:mm", 
       aspectRatio: 1, 
       lazyFetching: false, 
       firsthour: 0, 
       buttonIcons: {prev: 'circle-triangle-w'}, 
       eventClick: function(calEvent, jsEvent, view) { 
        if (calEvent.description) { 
         var $dialog = $('<div></div>') 
          .html(calEvent.description) 
          .dialog({ 
           title: calEvent.location, 
           modal: true, 
           width: 500 
         }); 

         $dialog.dialog('open'); 
        } 
        return false; 
        } 
      }); 
     }); 
    </script> 

在这个论坛上搜索后,我发现了这个话题:

JQuery:FullCalendar Plugin: Events are not shown in week view and day view but are shown in month view

但解决方案没有工作

感谢您阅读本

+0

您已禁用allDaySlot。请检查缺少的事件是否是AllDay事件。因为allDay插槽在日和周视图中,但不在月视图中。我怀疑这就是为什么你在月视图中看到这些事件,而不是在日和周视图中。 – 2012-07-19 13:28:44

+0

@Adil - 据我所知,事件是1小时的事件。更改该设置将不会产生影响 – Kamal 2012-07-19 14:36:42

+0

@AdilMalik我同意,allDaySlot没有任何影响 – kittikun 2012-07-20 06:51:49

回答

0

尝试设置

lazyFetching: true 
+0

感谢您的回复。作为一种魅力,只要你开始进入月视图,然后进入其他模式,但不是它最初打算如何工作。它本来应该使用默认日程表,因此我已经添加了 defaultView:“agendaWeek”, 现在星期日问题回来了,虽然一天是固定的。如果进入月份,它也会修正一周。 该schedule2.html链接已更新,所以你可以看到我的意思。 – kittikun 2012-07-20 06:41:52

+0

我看不到任何问题。也许检查支持,并与开发人员记录一个错误... – Kamal 2012-07-20 07:42:48

+0

会做,感谢您的帮助! – kittikun 2012-07-20 08:19:18

1

我只是碰到了这一点,我发现了一个丑陋的变通这让我通过了。以下是我通过议程视图获得的东西的方法:

在Fullcalendar的初始化过程中,将defaultView设置为'month'。接下来,将lazyFetching设置为true。现在,设置'loading'方法来改变视图类型。初始化应该看起来像这样:

$('#calendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: '' 
     },  
     defaultView: 'month', 
     allDayDefault: false, 
     timeFormat: '', 
     allDaySlot: false, 
     editable: false, 
     lazyFetching: true, 
     eventLimit: false,   

     events: 'https://www.google.com/calendar/feeds/mycalendarURL', 

     loading: function(bool) { 
      $('#calendar').fullCalendar('changeView', 'agendaWeek'); 
      } 

    }); 

信不信由你原来的'月'视图不显示; agendaweek视图是唯一一个出现 - 至少我现在在Mac上的Safari中测试它。

基本上这个hack方法将视图设置为一个视图,该视图似乎正确地收集所有事件,然后视图切换到我们真正想要看到的视图。通过启用lazyFetching,已加载的事件将保持加载。

请注意,如果用户导航到未来或过去的事件,则需要加载更多事件。当发生这种情况时,即使用户返回到他开始的位置,所有事情都会再次陷入僵局。对于我的应用程序,我将查看范围限制在一个较小的日期范围内,所以这很好。对于其他应用程序,这可能是一个问题。

希望有一天会出现一个合适的解决方案,因为我在搜索互联网后试图找到解决方案后,至少发现另外三个人看到了这个问题。希望我的黑客解决方案能够帮助其他人,直到这个问题得到正式解决。

相关问题