Express FullCalendar传递事件数组作为简单参数
目前,我正在尝试将数据库中的事件数组作为简单参数传递。下面我附上我的后端回调、查询文档和纯javascript完整日历实现。所以我尝试了forEach,但给了我错误。如果我以分析的方式直接传递objects数组,那么一切都可以正常工作,但我的问题是,我无法通过提供数组变量作为参数来呈现事件。我不喜欢使用JSON提要特性,因为我的api无法配置。欢迎提出任何建议,提前谢谢Express FullCalendar传递事件数组作为简单参数,express,fullcalendar,Express,Fullcalendar,目前,我正在尝试将数据库中的事件数组作为简单参数传递。下面我附上我的后端回调、查询文档和纯javascript完整日历实现。所以我尝试了forEach,但给了我错误。如果我以分析的方式直接传递objects数组,那么一切都可以正常工作,但我的问题是,我无法通过提供数组变量作为参数来呈现事件。我不喜欢使用JSON提要特性,因为我的api无法配置。欢迎提出任何建议,提前谢谢 calendar:35 Uncaught ReferenceError: eventsArray is not defined
calendar:35 Uncaught ReferenceError: eventsArray is not defined
at HTMLDocument.<anonymous>
bookdata
[
{
title: 'prj',
start: '2021-04-08T20:25:00.000Z',
end: '2021-04-09T20:25:00.000Z'
},
{
title: 'Proej3',
start: '2021-04-12T00:58:00.000Z',
end: '2021-04-13T00:58:00.000Z'
},
{
title: 'May proj',
start: '2021-05-10T11:00:00.000Z',
end: '2021-05-11T11:00:00.000Z'
},
{
title: 'prj',
start: '2021-04-28T15:00:00.000Z',
end: '2021-04-28T18:00:00.000Z'
}
]
FullCalendar构造函数
script.
document.addEventListener('DOMContentLoaded', function (databook) {
var calendarEl = document.getElementById('calendar');
var initdate = new Date();
var calendar = new FullCalendar.Calendar(calendarEl, {
function(){
var eventsArray=[];
bookdata.forEach(function (element){
eventsArray.push({
title:element.title,
start:element.start,
end:element.end })
})
},
initialView: 'dayGridMonth',
timeZone:'Europe/Athens',
initialDate: initdate,
handleWindowResize:true,
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
eventTimeFormat:{
hour: 'numeric',
minute: '2-digit',
},
eventDisplay:'auto',
views:{
timeGrid:{
formatDateTime:'DD/MM/YYYY HH:mm'
}
},
events:eventsArray
});
calendar.addEvent()
calendar.render();
});
不要在日历变量中创建eventsArray变量。您可以在创建calendarEl之前对其进行初始化,例如,不起作用……您修改的代码是什么样子的?尝试在一个工作示例中重新创建问题并发布链接。客户端无法理解JSON对象数组,因此除了显示对象属性之外的任何操作都无法读取此内容,然后以一种并非完全没有意义的方式实现事件提要:。fullCalendar为您提供了一种方便的方法,但您的方法很复杂,也没有任何意义我想使用我的路径参数(资源ID)查询我的数据库,因此每个资源都有自己的日历(“/:resourceID/calendar”),但没有发现类似的内容我使用了资源的高级版本,但我认为,我的想法有一个很好的基础,这是另一种避免为高级版本“付费”的方法,所以如果有人包括我找到了解决方案,让我们在这里发布。重要的是让你明白我想做什么我不认为你刚才说的任何话都会妨碍你以我刚才描述的方式明智地宣布你的事件反馈。您甚至可以有多个事件源,以获得不同的“资源”这里的基本问题是,您没有等待事件被下载,而且eventsArray超出了范围,因为您在一个随机匿名函数中声明了它,该函数甚至可能不会执行,因为它不是一个有效的选项,无法提供给fullCalendar
script.
document.addEventListener('DOMContentLoaded', function (databook) {
var calendarEl = document.getElementById('calendar');
var initdate = new Date();
var calendar = new FullCalendar.Calendar(calendarEl, {
function(){
var eventsArray=[];
bookdata.forEach(function (element){
eventsArray.push({
title:element.title,
start:element.start,
end:element.end })
})
},
initialView: 'dayGridMonth',
timeZone:'Europe/Athens',
initialDate: initdate,
handleWindowResize:true,
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
eventTimeFormat:{
hour: 'numeric',
minute: '2-digit',
},
eventDisplay:'auto',
views:{
timeGrid:{
formatDateTime:'DD/MM/YYYY HH:mm'
}
},
events:eventsArray
});
calendar.addEvent()
calendar.render();
});