在fullCalendar jquery插件上启用事件自动刷新的好方法?

时间:2010-12-09 17:59:29

标签: fullcalendar

是否有一种让fullCalendar jquery插件自动刷新其事件的好方法?

我可以使用计时器简单地调用'refetchEvents',但是如果用户当前正在拖动事件(在拖动事件时刷新期间抛出javascript错误),则会出现问题。还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

良好的解决方案......但还不够:

var calE = {
        url: 'calendarEvents.do',
        type: 'POST',
        data: {
            siteId: $("#siteId").val()
        },
        error: function() {
            alert('there was an error while fetching events!');
        }
};

function loadCal(){
        $('#calendar').fullCalendar({
                theme: true,
                events: calE,
                editable: false,            
                eventDrop: function(event, delta) {
                        alert(event.title + ' was moved ' + delta + ' days\n' +
                                '(should probably update your database)');
                },          
                loading: function(bool) {
                        if (bool) $('#loading').show();
                        else $('#loading').hide();
                },
                viewDisplay: function(viewObj) {}           
        });

}

function reloadCalendar(){
    $('#calendar').fullCalendar('removeEventSource', calEvent );
    var source = {
            url: 'calendarEvents.do',
            type: 'POST',
            data: {
                siteId: $("#siteId").val()
            },
            error: function() {
                alert('there was an error while fetching events!');
            }
        };
    $('#calendar').fullCalendar('removeEvents');
    $('#calendar').fullCalendar('addEventSource', source );
    $('#calendar').fullCalendar('rerenderEvents');
    calE = source;
}

通过使用它,您将保留原始算法以获取数据。

答案 1 :(得分:0)

你只需要跟踪一个标志,是否应该进行自动刷新。它默认为true,但在拖动或调整大小时设置为false。您可以根据eventDragStarteventDragStopeventResizeStarteventResizeStop进行设置。

请参阅http://arshaw.com/fullcalendar/docs/event_ui/以获取与鼠标相关的触发器列表。