[英]How to get right format for fullcalendar.io
我一直试图在日历中显示我的数据库条目。 步骤1是从服务器获取json格式的数据。 步骤2:遍历数据以构建数组。 第3步根据完整日历规范构建数组数组。
我似乎对步骤1和2做得很好,并且如果按所示方式剪切并粘贴结果,它会起作用。 日记条目将显示在其应放置的位置。 呜呼。 但是,随着时间的流逝,数据每天都会变化,并且希望此数据能够自动运行而无需剪切和粘贴。
大多数时候,我会得到一个索引数组0:... 1:... 2:...,我认为这可能就是为什么它不起作用的原因。 当我将任何一个文本变量粘贴为数据(文本)时,我什么也没得到;当我将数据推入数组时,它似乎格式确定,但仍不显示。 最令人沮丧。
事实证明,我采用的方法是正确的。 但是,我使用了一个变量,并将其称为日历,该日历在工作中投入了扳手。 这是一个编码问题,但是在其他页面中。
这是我分解的代码以及到达的位置,这并不优雅,因为我将它带到了一定水平的文本上,以便可以剪切和粘贴文本进行测试-并且在我可以正常工作时:
// get appointments
let events=new Array(); let apptDeat=new Array(); let start; let end; let id; let title=' '; let description=' ';
$.get('appointmentsList', function(apptList) {
console.log('apptList1:', apptList, ' Count: ',apptList.Count);
for (let x=0; x < apptList.Count; ++x) {
if (apptList.Items[x].oDdate) {
start = moment(apptList.Items[x].oDdate).format("YYYY-MM-DD"); start += 'T'+apptList.Items[x].oDtime;
} else { start =0; }
if (apptList.Items[x].oDEdate) {
end = moment(apptList.Items[x].oDEdate).format("YYYY-MM-DD"); end += 'T'+apptList.Items[x].oDEtime;
} else { end =0; }
if (apptList.Items[x].oDNumber) { title = apptList.Items[x].oDNumber; } else { title=' '; }
if (apptList.Items[x].oDTopic) { description = apptList.Items[x].oDTopic; } else { description=' '; }
id=apptList.Items[x].Id;
apptDeat += '{"title":"'+title+'","description":"'+description+'","id":"'+id+'","start":"'+start+'","end":"'+end+'","color":"blue" },';
}
apptDeat = apptDeat.substring(0, apptDeat.length-1);
events.push(apptDeat);
console.log('event: ', event, ' events: ', events, ' apptDeat: ', apptDeat);
let today = new Date();
let dateInput;
$('#calendar').fullCalendar({
eventClick: function(eventObj) { appDetail(eventObj.id); },
events: events
//[ {"title":"EVE0106820","description":" ","id":"apptDetails:8171433761442206","start":"2019-02-12T08:30","end":"2019-02-13T05:31" },{"title":"EVE0107006","description":" ","id":"apptDetails:8171581388491175","start":"2019-02-07T08:31","end":"2019-02-08T17:31" },{"title":"EVE0106551","description":"AWS DevOps","id":"apptDetails:8171864774477945","start":"2019-01-28T09:00","end":"2019-01-31T16:00" } ]
});
顺便说一句,我正在使用Chrome和开发者工具来查看日志的变量控制台。
这个问题尚不清楚具体的问题是什么,但似乎有些事情已经解决了。
根据FullCalendar docs的说法 , events
属性可以是多种事物,包括对象数组,这就是您试图传递它的方式。 这行代码:
apptDeat += '{"title":"'+title+'","description":"'+description+'","id":"'+id+'","start":"'+start+'","end":"'+end+'","color":"blue" },';
似乎很恐怖。 如果您要构建要传递的对象数组(这就是他们的文档所说的),则不是这样。 您正在构建字符串“对象”,而不是对象数组。 您继续追加到该字符串,然后只需将该字符串推入一个空数组即可。 我假设您剩下的是一个由一个混乱的字符串组成的数组。
apptDeat
不应为数组,而应为对象,并且在for循环内,应为apptDeat作为对象分配值,然后将其推送到events
数组,如下所示:
apptDeat = {
title,
description,
id,
start,
end,
color: "blue"
};
events.push(apptDeat);
旁注,@表示代码格式。 希望那只是StackOverflow搞砸了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.