是否有一种让fullCalendar jquery插件自动刷新其事件的好方法?
我可以使用计时器简单地调用'refetchEvents',但是如果用户当前正在拖动事件(在拖动事件时刷新期间抛出javascript错误),则会出现问题。还有更好的方法吗?
答案 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
。您可以根据eventDragStart
,eventDragStop
,eventResizeStart
和eventResizeStop
进行设置。
请参阅http://arshaw.com/fullcalendar/docs/event_ui/以获取与鼠标相关的触发器列表。