繁体   English   中英

如何获得fullcalendar.io的正确格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM