更改FullCalendar中的资源

时间:2017-08-09 22:44:22

标签: javascript jquery fullcalendar

我正在尝试使用多个视图选项来制作网页日历。 我有学生视图和项目视图(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); 
        }
    });
}

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

1 个答案:

答案 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方法。)