【问题标题】:Some events are missing in week view and others in day view but are shown in month view周视图中缺少一些事件,而日视图中缺少其他事件,但在月视图中显示
【发布时间】:2012-07-18 15:35:42
【问题描述】:

我正在同步 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

但解决方案不起作用

感谢阅读本文

【问题讨论】:

  • 您已禁用 allDaySlot。请检查缺少的事件是否是 AllDay 事件。因为 allDay 插槽存在于日视图和周视图中,但不在月视图中。我怀疑这就是为什么您在月视图中看到这些事件,而不是在日视图和周视图中。
  • @Adil - 据我所知,这些事件是 1 小时的事件。更改该设置不会产生任何影响
  • @AdilMalik 我同意,allDaySlot 没有任何效果
  • Fullcalendar 的问题已经开放 3 年了。您可以使用此link 查看其状态

标签: jquery jquery-plugins plugins fullcalendar


【解决方案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 解决方案能够帮助其他人,直到这个问题得到正式修复。

【讨论】:

    【解决方案2】:

    尝试设置

    lazyFetching: true
    

    【讨论】:

    • 感谢您的回复。作为一种魅力,只要你开始进入月视图然后进入其他模式,但这并不是它最初的工作方式。它应该默认使用议程周,所以我添加了 defaultView:“议程周”,现在周日问题又回来了,虽然天是固定的。如果进入一个月,它也会修复一周。 schedule2.html 链接已更新,因此您可以明白我的意思。
    • 我看不出有任何问题。也许检查支持并与开发人员记录错误......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多