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 插件:事件不显示在周视图和日视图中,但显示在月视图中

但解决方案没有奏效

感谢您阅读本文

4

2 回答 2

1

我刚刚遇到了这个问题,我发现了一个丑陋的解决方法让我通过了它。以下是我使用议程视图使事情看起来正确的方法:

在 Fullcalendar 的初始化中,将 defaultView 设置为“月”。接下来,将lazyFetching 设置为true。现在,设置“加载”方法来更改视图类型。初始化应该是这样的:

    $('#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' );
            }

    });

信不信由你,原来的“月”视图并没有出现;议程周视图是唯一出现的视图 - 至少当我目前在我的 Mac 上的 Safari 中测试它时。

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

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

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

于 2014-09-20T09:52:51.110 回答
0

尝试设置

lazyFetching: true
于 2012-07-19T14:35:27.510 回答