Как получить правильный формат для fullcalendar.io - PullRequest
0 голосов
/ 06 февраля 2019

Я пытался отобразить записи своей базы данных в календаре.Шаг 1 - получить данные с сервера в формате json.Шаг 2: перебрать данные для построения массива.шаг 3 построить массив массивов в соответствии со спецификациями fullcalendar.

Кажется, я отлично справляюсь с шагами 1 и 2, и если я вырезал и вставил результат, как показано, он работает.Записи в дневнике показывают, где они должны.Woohoo.Однако данные со временем будут меняться со временем, и хотелось бы, чтобы это работало автоматически без вырезания и вставки.

В большинстве случаев я получаю индексированный массив 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 и инструменты разработчика, чтобы увидеть консоль переменных в журнале.

1 Ответ

0 голосов
/ 06 февраля 2019

В этом вопросе неясно, в чем заключается конкретная проблема, но кажется, что некоторые вещи отключены.

Согласно документам FullCalendar , свойство 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);

Sidenote, yikes @ форматирование кода.Надеюсь, это просто StackOverflow испортил это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...