在完整日历中更改资源



我正在尝试做一个具有多个视图选项的网络日历。 我有一个"学生"视图和一个"项目"视图(都是 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;
}

它正确加载学生,但在我更改视图时不会更改资源。 我也尝试使用资源作为函数,但我真的不知道如何使其工作。

现在我有这个:

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); 
}
});
}

和其他事件和以前一样。 但现在它甚至不加载事件。

你在第一个例子中做了什么,例如resources = 'students';本质上是没有意义的。resources本身只是一个变量,与 fullCalendar 无关。

我想你是在想象它会影响data: { 'data': resources },但fullCalendar之前已经运行了该代码,并像当时一样使用了resources的值。它不会再次运行该代码或获取resources变量的新值。

如果您只是希望每次获取资源时都能将"数据"的动态值传递到服务器中,则需要按照以下文档将"resources"fullCalendar 选项实现为自定义函数:fullcalendar.io/docs/resource_data/resources_function 。然后,您可以将所需的任何值传递给服务器以及fullCalendar提供的值。

您的第二个代码示例正是按照我在注释中写的内容执行此操作的。它唯一的问题是,根据您之前的示例,ajax 调用定义是错误的。您需要覆盖某些默认值,并在$.ajax选项中设置以下附加字段:

method: "POST"

dataType: "json"

(在第一个示例中,fullCalendar 已经为您静默地设置了 dataType,但现在您正在执行自定义版本,因此您必须自己完成,并且您也忘记再次设置 HTTP 方法。

相关内容

  • 没有找到相关文章

最新更新