2016-05-14 3 views
1

Im пытается показать динамически показ событий в полном календаре в моем проекте. Есть ошибка, я не понимаю, в чем причина этого. Однако, когда я жестко управляю событиями массива, он работает нормально.SyntaxError: missing; перед заявлением при показе событий в полном календаре

Календарь Jquery код:

$(document).ready(function() { 
    $('.fullcalendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,basicWeek,basicDay' 
     }, 
     events: [ 
      eventList() 
     ] 
    }); 

Ajax вызова

function eventList(){ 
    $.ajax({ 
     url :'/calendarMaintenanceData', 
     type: 'GET', 
     dataType: 'json', 
     success:function(data){ 
      $.each(data, function (index, item) {                      
       { 
        id:item.id, 
        title:item.machinecode, 
        start:item.estimated_maintenance_date 
       } 
      }); 
     } 
    }); 
} 

Ошибка:

enter image description here

ответ

1

eventList необходимо поместить все события в массив. Вы можете использовать $.map вместо $.each для этого.

success:function(data){ 
     return $.map(data, function (item) { 
      return {                      
       id:item.id, 
       title:item.machinecode, 
       start:item.estimated_maintenance_date 
      }; 
     }); 
    } 

Однако этого все равно не будет. Проблема в том, что $.ajax является асинхронным, поэтому возвращаемое значение функции обратного вызова не возвращается функции fullCalender. Вы должны вызвать fullCalendar в функции обратного вызова после создания массива.

function eventList(callback){ 
    $.ajax({ 
     url :'/calendarMaintenanceData', 
     type: 'GET', 
     dataType: 'json', 
     success:function(data){ 
      callback($.map(data, function (item) {                      
       return { 
        id:item.id, 
        title:item.machinecode, 
        start:item.estimated_maintenance_date 
       }; 
      }); 
     } 
    }); 
} 

$(document).ready(function() { 
    eventList(function(events) { 
     $('.fullcalendar').fullCalendar({ 
      header: { 
       left: 'prev,next today', 
       center: 'title', 
       right: 'month,basicWeek,basicDay' 
      }, 
      events: events 
     }); 
    }); 
}); 
+0

Да, его работающий штраф ... Большое спасибо вам, Бармар. – aniruddh

0

В $.each() вы должны назначить переменную объекта, определенного как этот

$.each(data, function (index, item) {                      
        var someobject = { 
         id:item.id, 
         title:item.machinecode, 
         start:item.estimated_maintenance_date 
         }; 
        }); 
+0

я назначить переменную после этой новой ошибки шоу { TypeError: d не определено \t ... форма (д)), a.extend (я, д), е && (я. source = e), i._id = d._id || (void 0 === d.id? "_ fc" + tb ++: d .... \t} – aniruddh

+0

Вы определили переменную d где-то, потому что это не в коде, который вы отправили –

+0

Нет, я не использую d-переменную где-нибудь – aniruddh

Смежные вопросы