Как я могу получить эту строку для преобразования обратно в массив? - PullRequest
0 голосов
/ 09 июля 2010

Я пытаюсь использовать jMonthCalendar для добавления некоторых событий из XML-канала в календарь.В оригинальном jMonthCalendar события находятся в массиве, который выглядит следующим образом:

var events = [
{ "EventID": 1, "StartDateTime": new Date(2009, 5, 12), "Title": "10:00 pm - EventTitle1", "URL": "#", "Description": "This is a sample event description", "CssClass": "Birthday" },
{ "EventID": 2, "StartDateTime": "2009-05-28T00:00:00.0000000", "Title": "9:30 pm - this is a much longer title", "URL": "#", "Description": "This is a sample event description", "CssClass": "Meeting" }];

Я использую цикл для создания группы таких событий:

eventsArray += '{"EventID":'+eventID+', "StartDateTime": '+new Date(formattedDate)+', "EndDateTime":  '+new Date(formattedDate)+', "Title": "'+eventTitle+'", "URL": "'+detailURL+'","Description": "'+description+'"},'

Язатем пытаясь вернуть их обратно в массив, выполнив

eventsArray = eventsArray.slice(0, -1); var events = [eventsArray];

Проблема в том, что содержимое "eventsArray" не преобразуется обратно в объекты массива, как это делается в примере с исходным кодом.

Я знаю, что это вопрос новичка, но любая помощь будет признательна.

Ответы [ 3 ]

1 голос
/ 09 июля 2010

Вместо использования + = и строковой версии объекта, попробуйте добавить фактический объект.

Например, вместо:

eventsArray += '{"EventID":'+eventID+', "StartDateTime": '+new Date(formattedDate)+', "EndDateTime":  '+new Date(formattedDate)+', "Title": "'+eventTitle+'", "URL": "'+detailURL+'","Description": "'+description+'"},'

Do:

events.push({"EventID":eventID, "StartDateTime": new Date(formattedDate), "EndDateTime": new Date(formattedDate), "Title": eventTitle, "URL": detailURL,"Description": description});
0 голосов
/ 09 июля 2010

Полагаю, вы получите то, что хотите, переключившись с конкатенации строк на непосредственное управление объектами:

var newEvent = {"EventID": eventID, "StartDateTime": new Date(formattedDate), "EndDateTime": new Date(formattedDate), "Title": eventTitle, "URL": detailURL, "Description": description};
events.push(newEvent);
0 голосов
/ 09 июля 2010

Измените цикл создания:

eventsArray.push({
  EventID: eventID, 
  StartDateTime: new Date(formattedDate), 
  EndDateTime:  new Date(formattedDate),
  Title: eventTitle, 
  URL: detailURL,
  Description: description
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...