我正在尝试使用多个视图选项来制作网页日历。 我有学生视图和项目视图(FullCalendar中的时间轴视图,其中学生和项目是资源)。
问题是我不知道如何改变资源。我试过这个:
var resources = 'students';
$('#calendar').fullCalendar({
resources: {
url: 'resource-load.php',
type: 'POST',
data: {
'data': resources
}
}
});
当我改变观点时:
switch (selected) {
case 'general':
$('#calendar').fullCalendar( 'changeView', 'month');
break;
case 'students':
$('#calendar').fullCalendar( 'changeView', 'timelineDay');
$('#calendar').fullCalendar('option','resourceLabelText','Students');
resources = 'students';
$('#calendar').fullCalendar('refetchResources');
break;
case 'proyects':
$('#calendar').fullCalendar( 'changeView', 'timelineDay');
$('#calendar').fullCalendar('option','resourceLabelText','Proyects');
resources = 'proyects';
$('#calendar').fullCalendar('refetchResources');
break;
default: break;
}
它正确加载学生但在更改视图时不会更改资源。 我也尝试使用resources as a function,但我真的不知道如何使其有效。
现在我有了这个:
var resources = 'students';
$('#calendar').fullCalendar({
resources: function(callback) {
getResources(function(resourceObjects) {
callback(resourceObjects);
});
}
});
一个功能:
function getResources(handleData) {
$.ajax({
url:"resource-load.php",
data: {
'data': resources
},
success:function(data) {
handleData(data);
}
});
}
和以前一样的其他事件。 但现在它甚至没有加载事件。
答案 0 :(得分:2)
你在第一个例子中做了什么,例如resources = 'students';
基本上没有意义。 resources
本身只是一个变量,与fullCalendar无关。
我认为您认为它会影响data: { 'data': resources }
,但fullCalendar之前已经运行过该代码,并使用了resources
的值,就像那时一样。它不会再次运行该代码或者永远使用resources
变量的新值。
如果您只想传递"数据"的动态值。每次获取资源时进入服务器,您需要实现您的资源" fullCalendar选项作为本文档的自定义函数:fullcalendar.io/docs/resource_data/resources_function。然后,您可以将任何您想要的值传递给服务器以及fullCalendar提供的值。
您的第二个代码示例就是按照我在评论中写的内容完成的。唯一的问题是ajax调用定义是错误的,基于您之前的示例。您需要覆盖一些默认值,并在$.ajax
选项中设置以下附加字段:
method: "POST"
和
dataType: "json"
(在第一个示例中,fullCalendar已经为您静默设置了dataType,但现在您正在自定义版本,因此您必须自己完成,而且您也忘了再次设置HTTP方法。)