周视图中缺少某些事件,日视图中缺少其他事件,但在月视图中显示

时间:2012-07-19 12:36:54

标签: jquery jquery-plugins plugins fullcalendar

我正在同步fullcalendar和谷歌日历,我注意到在周视图中,从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

但解决方案无效

感谢您阅读本文

2 个答案:

答案 0 :(得分:1)

我刚刚碰到这个,我找到了一个丑陋的解决办法,让我通过它。以下是使用agendaViews让事情看起来正确的方法:

在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,可以加载已加载的事件。

请注意,如果用户导航到远期或过去的事件,则需要加载更多事件。当这种情况发生时,即使用户导航回到他开始的地方,一切都会再次发生。对于我的应用程序,我限制查看到一个小的日期范围,所以这很好。对于其他应用程序,这可能是一个问题。

希望有一天能够找到一个合适的解决方案,因为我找到了至少另外三个在我试图找到解决方案的互联网上看到这个问题的人。希望我的黑客解决方案可以帮助其他人,直到这个正式修复。

答案 1 :(得分:0)

尝试设置

lazyFetching: true