【发布时间】:2017-08-09 22:44:21
【问题描述】:
我正在尝试制作具有多个视图选项的网络日历。 我有一个学生视图和一个项目视图(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);
}
});
}
和以前一样的其他事件。 但现在它甚至不加载事件。
【问题讨论】:
-
fullcalendar.io/docs/resource_data/addResource 和 fullcalendar.io/docs/resource_data/removeResource 可能会对您有所帮助。你现在在做什么,例如
resources = 'students';毫无意义。resources本身只是一个变量,与 fullCalendar 无关。我想你在想象它会影响 `data: { 'data': resources }, but fullCalendar has already run that code previously, and used the value ofresources` 就像那一刻一样。它不会再次运行该代码,也不会采用resources的新值。 -
另外,如果您只是希望能够在每次获取资源时将“数据”的动态值传递到服务器,请尝试按照以下方式实现它:fullcalendar.io/docs/resource_data/resources_function。然后,您可以动态地将您想要的任何值以及 fullCalendar 提供的值传递给服务器。
-
仅查看代码我可以发现的一件事是:在您的原始定义中,对资源加载的调用是使用 POST 进行的,但在您的新代码中它是 GET($.ajax 使用GET 除非您另有说明)。您需要在 $.ajax 选项中设置
method: "POST"选项。您可能还需要设置dataType: "json",以确保 jQuery 将返回的数据解释为 JSON 对象而不仅仅是字符串。 -
没问题,乐于助人:-)。如果我将 cmets 中的各个位写入答案,您可以将其标记为已接受的答案吗?这是正确的方法,而不是将其编辑到问题中。
-
现在已经完成了。祝你项目的其余部分好运。
标签: javascript jquery fullcalendar