我一直在使用FullCalendar V1.5.3替换MS SharePoint。
我正在尝试重新呈现日历事件的源。例如,在默认情况下,当页面加载时,这是ajax调用
/Calendar/Events/FeedTasks?开始=1338094800&结束=1341118800&_=1339103302326
我们使用一个选择框将事件源更改为只显示任务(从不同的表中提取),因此在选择之后,ajax调用更改为:
/日历/事件/FeedEvents?开始=1338094800&结束=1341118800&_=1339103302326
这管用。但是,它不只是更改当前的日历事件源,而是创建一个重复的日历表(在当前的日历表之上创建一个新的divclass=“fc-content”div
)。
这是我目前所掌握的:
$("#TaskSelector").change(onSelectChange);
function onSelectChange(){
$('#calendar').fullCalendar({
events: '/calendar/events/' + $('#TaskSelector').val()
});
}
});
我错过了什么?
有一些名为RemoveEventSource()
和AddEventSource()
的方法允许您调整源列表。我有一个类似的情况,我需要在month视图中隐藏一个源,但在其他上下文中显示它,我发现在eventSources数组中删除和重新添加元素是实现这一点的最干净的方法。
var fcSources = {
courses: {
url: base+'accessfm/calendar/courses',
type: 'GET',
cache: true,
error: function() { alert('something broke with courses...'); },
color: 'purple',
textColor: 'white',
className: 'course'
},
requests: {
url: base+'accessfm/calendar/requests',
type: 'GET',
cache: true,
error: function() { alert('something broke with requests...'); },
textColor: 'white',
className: 'requests'
},
loads: {
url: base+'accessfm/calendar/loads',
type: 'GET',
cache: true,
error: function() { alert('something broke with loads...'); },
color: 'blue',
textColor: 'white',
className: 'loads'
}
};
<snip>
$('#fullcalendar').fullCalendar({
header: {
left: 'title',
center: 'agendaDay,agendaWeek,month',
right: 'today prev,next'
},
defaultView: 'agendaWeek',
firstDay: 1,
theme: true,
eventSources: [ fcSources.courses, fcSources.requests, fcSources.loads ],
viewDisplay: function(view) {
if (lastView != view.name){ // view has been changed, tweak settings
if (view.name == 'month'){
$('#fullcalendar').fullCalendar( 'removeEventSource', fcSources.loads )
.fullCalendar( 'refetchEvents' );;
}
if (view.name != 'month' && lastView == 'month'){
$('#fullcalendar').fullCalendar( 'addEventSource', fcSources.loads );
}
}
lastView = view.name;
}
});
不要只是复制/粘贴这段代码,因为它并不能完全解决您的问题。但你应该能从中吸取一些点子。调整fcsources
哈希以适应您的源,然后仅用其中一个源实例化您的fullCalendar对象,并使用RemoveEventSource
和AddeVentSource
方法交换它。
还请注意refetchevents()
的使用-这是确保正确重新呈现显示所必需的。
问题内容: 我试图让fullCalendar反映通过AJAX对数据库所做的更改。问题是在成功进行AJAX调用后,它不会更新屏幕上的日历。 我使用了错误的方法?无需重新加载整个页面的最佳方法是什么?感谢您的输入! 问题答案: 有几种方法。一些不太优雅。 1.如果您使用FullCalendar捕获json事件: 做就是了: 如果希望外部方法获取事件,则可以执行。不优雅但是可以用
我的目标是有两个不同的FullCalendar元素保持同步。我不做任何网络调用,在这一点上只是客户端数组。 当我添加一个事件时(比如通过点击或者在它构建之后),日历实际上不会像文档所说的那样重新呈现。 我还尝试使用“renderEvents”和“renderEvent”风格,但这似乎没有必要,因为“updateEvents”将/应该更新这些事件的呈现。我还遇到了一个问题,日历列表版本上的“rend
问题内容: 我使用fullcalendar v4来显示事件。事件在负载中正常显示,但是我需要使用多个复选框添加过滤器,并在使用ajax的onchange复选框之后刷新全日历事件。 更改后,我得到了新的对象事件,但我需要刷新我尝试使用的fullcalendar,但无法正常工作 全日历脚本 阿贾克斯脚本 更改时复选框功能 问题答案: 您没有确切解释代码出了什么问题,但是我可以看到,当您从AJAX调用获
问题内容: 我正在使用fullcalendar,如何从同一服务器端,多个URL获取更多事件?最初的方法有效,我只想在事件到达时添加其他事件(ajax)。 问题答案: 您可以使用Ajax获取数据,然后动态添加新源
问题内容: 我有一个包含三个部分的搜索页面。浏览主题组件列出了可供选择的主题。浏览文章组件基于主题ID列出所有文章,如果没有主题ID,则加载所有文章。home组件包含browsertopics和browserarticles组件,并根据所单击的主题更改其状态。 我需要的是,我希望BrowseTopics组件在父状态更改时停止重新呈现。我尝试使用shouldComponentUpdate()(返回f
我不知道为什么这不起作用 单击该按钮显然会更改道具,但旧的仍在输入中!那么什么给了?我做错了什么?这是虫子吗?有变通办法吗?