【问题标题】:Refetch events when switching fullcalendar views切换全日历视图时重新获取事件
【发布时间】:2010-03-10 14:29:50
【问题描述】:

我在日历中使用了 3 个视图:月、议程周和议程日。添加事件后,我调用 refetchEvents 来显示新事件。如果我从议程周或议程日添加事件,则重新获取当然会获取一周或一天的事件。如果我然后切换到月视图,我只有一周或一天的事件。

我尝试在 viewDisplay 上添加 refetchEvents。这样做的问题是它在初始负载上运行,这会导致所有事件的重复。有没有办法可以阻止在日历加载期间调用 refetchEvents?

在切换视图时有没有其他方法可以强制重新获取?

【问题讨论】:

    标签: jquery fullcalendar


    【解决方案1】:

    创建全日历时,只要视图发生更改,就会触发 viewDisplay 方法。从逻辑上讲,您可以将其用作 viewChanged 事件。例如:

    $('#calendar').fullCalendar({
        ... 
        viewDisplay: function(view) { alert('viewDisplay(' + view + ')'); }
    });
    

    似乎从版本1.6.3 开始,要使用的正确回调是viewRender

    $('#calendar').fullCalendar({
        ...
        viewRender: function(view, element) { alert('new view: ' + view.name); }
    });
    

    【讨论】:

      【解决方案2】:

      对于 fullcalendar 库本身的增强听起来是个好主意 - 该库可以为“viewChanged”甚至“viewChanging”事件提供回调函数。 这样的东西是真的少了,因为,如果你需要创建“AJAX 深度链接”,你还需要知道视图什么时候发生了变化。

      更新:如果您在添加活动后更改日历的“lazyFetching”选项http://arshaw.com/fullcalendar/docs/event_data/lazyFetching/,会发生什么情况?

      【讨论】:

        【解决方案3】:

        不是一个完美的想法,但只是添加了一个替代方案......

        $('.fc-month-button').click(function () {
        
        });
        
        $('.fc-agendaWeek-button').click(function () {
        
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-04
          • 2018-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多