全日历,资源作为函数不起作用



我正在使用Fullcalendar,并试图将资源作为函数

resources: function(callback){
var manageEvent = new ManageEvent();
var request = manageEvent.getEmployees();
request.always(function (param) {
//location.reload();
var list = [];
var emp;
for (var elem in param) {
emp = param[elem];
list.push({
'id': emp['cp_collaboratore'],
'title': emp['cognome_col']
});
}
var t = JSON.stringify(list);
callback(t);
});
request.catch(function (param) {
alert('errore');
});
},

我通过日志检查了变量"t",它显示了以下结果:

[{"id":"1","title":"name_1"},{"id":"2","title":"name_2"},{"id":"3","title":"name_3"},{"id":"5","title":"name_4"},{"id":"9","title":"name_5"}]

但它不起作用,并显示以下错误消息:

Uncaught TypeError: resourceInputs.map is not a function
at ResourceManager.setResources

您只需要编写

callback(list);

代码中的t是一个字符串,因为您使用JSON.stringify()list数组转换为字符串。但是fullCalendar需要一个实际的数组,而不是字符串。它不能运行函数或从字符串中读取单个属性。

您可以完全删除线路var t = JSON.stringify(list);,这是不需要的。

通常,使用stringify((的唯一原因是,如果您想将值记录到控制台进行调试,或者如果您想使用AJAX将数组发送到其他地方,则将数组转换为JSON。当您只能使用对象本身时,将数组和对象作为串行字符串在JavaScript内部传递是没有意义的。

最新更新