javascript - 如何为 fullcalendar.io 获得正确的格式
问题描述
我一直在尝试在日历中显示我的数据库条目。第 1 步是从服务器获取 json 格式的数据。第 2 步:遍历数据以构建数组。第 3 步根据 fullcalendar 规范构建数组数组。
我似乎对第 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 搞砸了。
推荐阅读
- powershell - StaffHub Powershell Cmdlet - 团队 ID 必须具有 Team_guid 模式
- windows - 批处理脚本在 Windows 10 Pro 上运行,但不在 Surface Pro 4 上运行
- c++ - 浮点减法给了我不准确的结果
- cuda - CUDA 对数:nvprof 以双精度检测单精度操作
- python - 如何在 Django 中从 HTML 标记按钮在后台触发 Python 脚本?
- c - 如何在C中同时进行输入和输出?
- c - 将字符包读入数组然后解析
- common-lisp - 将包名称添加到符号
- php - Fuel\Core\PhpErrorException [注意]:未定义变量:配置mysql db时出错
- java - 如何计算断路器从闭合状态变为断开状态的频率?