2014-10-14 3 views
2

IM питающего календарь со следующей функцией:fullCalendar функция пользовательских событий бросков не функция ошибки

$('#calendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,agendaWeek,agendaDay' }, 
     editable: true, 
     eventLimit: true, 
     events: function(callback) { 
      $.ajax({ 
       url: '/appointments.json', 
       dataType: 'json', 
       success: function(doc) { 
        var events = []; 
        $(doc).find('event').each(function() { 
         events.push({ 
          title: $(this).attr('title'), 
          start: $(this).attr('start') // will be parsed 
         }); 
        }); 
        callback(events); 
       } 
      }); 

Но я получаю эту ошибку:

object is not a function //callback(events) line 

На Js консоли браузера. Любая идея, что может быть проблемой?

+0

события: «/appointments.json» работает отлично. Проблема заключается в функции – ntonnelier

ответ

4

Предполагая, что вы используете FullCalendar 2. *, как указано в documentation, подпись для events является

function(start, end, timezone, callback) { }

параметр с именем callback, на самом деле, start который является momentjs объектом. Для того, чтобы решить проблему необходимо добавить параметры вашей функции, так что ваш код будет:

events: function(start, end, timezone, callback) { 

Это будет работать до тех пор, как ваш events (передается callback) имеют правильный формат и параметры, определенные в documentation ,

Edit:

Если вы хотите установить цвет фона каждого события в соответствии со значением на его JSon атрибутов, вы должны использовать eventRender. Проверьте это jsfiddle, где фон каждого события задается при рендеринге события.

Как показано в jsfiddle, вы можете изменить фон, условно, на основе значения, предоставленного json.

+0

благодаря @milz, но im все равно получает ту же ошибку. Извините, я не могу изменить свой вопрос снова, теперь моя функция такая же, но с указанными вами параметрами: function (start, end, timezone, callback) – ntonnelier

+0

См. [Рабочий jsfiddle] (http://jsfiddle.net/milz/ 6ssmuzo7 /). Я принимаю формат 'doc', и я не использовал' $ .ajax' для упрощения. Если вы гарантируете, что 'doc' имеет тот же формат, он должен работать. Также проверьте версию FullCalendar. Я использую 2.1.1 –

+0

спасибо @milz, но все равно то же самое, даже если я скопирую все ваши коды. Возможно, я что-то пропустил в библиотеке fullCalendar. – ntonnelier