2017-02-14 3 views
-1

первых или все .. я просмотрел тонны материала и примеров по этому вопросу, но я не могу понять это eitherhow ..FullCalendar - События получают данные от API и кажется правильным, но не отображаются в календаре

Сценарий:

Запуск на ASP.NET с помощью Web Api 2 ...

API призван принести события, объекты, кажется, законны: enter image description here

Проблема, кажется, что обратный вызов никогда не правда ..

Код:

$(document).ready(function() { 
 

 
    var date = new Date(); 
 
    var d = date.getDate(); 
 
    var m = date.getMonth(); 
 
    var y = date.getFullYear(); 
 

 
    var calendar = $('#calendar').fullCalendar({ 
 
     header: { 
 
      left: 'prev,next today', 
 
      center: 'title', 
 
      right: 'month,agendaWeek,agendaDay' 
 
     }, 
 
     selectable: true, 
 
     selectHelper: true, 
 
     select: function (start, end, allDay) { 
 
      var title = prompt('Event Title:'); 
 
      if (title) { 
 
       calendar.fullCalendar('renderEvent', 
 
        { 
 
         title: title, 
 
         start: start, 
 
         end: end, 
 
         allDay: allDay 
 
        }, 
 
        true // make the event "stick" 
 
       ); 
 
      } 
 
      calendar.fullCalendar('unselect'); 
 
     }, 
 
     editable: true, 
 
     events: function (start, end, callback) { 
 
      $.ajax({ 
 
       type: "GET", //WebMethods will not allow GET 
 
       url: "api/Calendar/GetCalendarEvents/" + getQueryVariable("teamid"), 
 
       //completely take out 'data:' line if you don't want to pass to webmethod - Important to also change webmethod to not accept any parameters 
 
       contentType: "application/json; charset=utf-8", 
 
       dataType: "json", 
 
       success: function (doc) { 
 
        var events = []; //javascript event object created here 
 
        
 
        var obj = doc; 
 
        $(obj).each(function() {       
 
          events.push({ 
 
          title: $(this).attr('title'), //your calevent object has identical parameters 'title', 'start', ect, so this will work 
 
          start: $(this).attr('start'), // will be parsed into DateTime object  
 
          end: $(this).attr('end'), 
 
          id: $(this).attr('id') 
 
         }); 
 
        });      
 
        if (callback) callback(events); 
 
       } 
 
      }); 
 
     } 
 
    });

+0

Должно действительно быть 'if (typeof callback == 'function')', но это не относится к точке. –

+0

Кроме того, вы не можете ссылаться на свою переменную 'calendar' по имени из ее декларации, и вы не включили jQuery или FullCalendar в свой фрагмент. Сначала просмотрите в DevTools проблемы, затем отредактируйте исходное сообщение и повторите попытку, если у вас все еще есть проблемы. –

+0

Спасибо за комментарии @ J.Titus :) Правильно .. я забыл добавить их в пример фрагмента в stackoveflow. Если бы все было на месте для моей среды для разработчиков, хотя :) –

ответ

1

Согласно официальному документу https://fullcalendar.io/docs/event_data/events_function/, функции для программной генерации объектов событий

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

Вы должны заменить свои функции functio п с этим:

 events: function (start, end, timezone, callback) { 
      $.ajax({ 
       type: "GET", //WebMethods will not allow GET 
       url: "api/Calendar/GetCalendarEvents/" + getQueryVariable("teamid"), 
       //completely take out 'data:' line if you don't want to pass to webmethod - Important to also change webmethod to not accept any parameters 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (doc) { 
        var events = []; //javascript event object created here 

        var obj = doc; 
        $(obj).each(function() {       
          events.push({ 
          title: $(this).attr('title'), //your calevent object has identical parameters 'title', 'start', ect, so this will work 
          start: $(this).attr('start'), // will be parsed into DateTime object  
          end: $(this).attr('end'), 
          id: $(this).attr('id') 
         }); 
        });      
        if (callback) callback(events); 
       } 
      }); 
     } 

Потому что, когда вы звоните с тремя параметрами, четвёртые парами обратного вызов пуст, то причина не получить событие.

+0

Спасибо, куча @shi .. Маленькие вещи, подобные этому, могут быть действительно, очень раздражающими, поскольку это непросто одно из последних мест, которые вы хотите посмотреть .. hehe :) Работает как шарм Теперь ! –

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