2017-11-29 5 views
1

캘린더를 만드는 자바 스크립트 함수를 만들었습니다. 달력을 만들려면 fullcalendar를 사용합니다. 코드에서 아약스 호출을 사용하여 캘린더에 포함해야하는 이벤트를 확인할 수 있습니다. 문제는 이벤트를 클릭 한 후 해당 속성 중 하나가 null이된다는 것입니다. 세부 정보를 보려면 이벤트를 클릭 한 후에 속성 "end"가 null이됩니다. 나 혼란 스러울 때 console.log "calendarevents"eventclick 메서드 내에서 "끝"null이 아니지만 로그 콘솔 "calEvent"및 원본 (소스 배열을 보여줍니다) 및 오른쪽에서 찾습니다 때 항목에서 "end"가 null이라고합니다. 나는 이것으로 완전히 혼란스러워. 나는 너희들이 내가 뭘 잘못하고 도와 줄 수 있기를 바랍니다. :) 미리 감사드립니다! OnClick이 실행될 때 Object 속성이 null로 변경됩니다.

<script> 
    $(document).ready(function() { 
     var events = [];    
     $.ajax({ 
      type: "GET", 
      url: "@Url.Action("GetEvents", "Agenda")", 
      contentType: 'application/json; charset=utf-8', 
      dataType: "json", 
      success: function (data) { 
       console.log(" Start Pushing " + data); 
       $.each(data, function (i, v) { 
        events.push({ 
         title: v.Subject, //string 
         description: v.Description, //string 
         start: moment(v.StartDateTime), //datetime 
         end: moment(v.EndDateTime), //datetime 
         color: v.ThemeColor, //string 
         allDay: v.IsFullDay //bool 
        }); 
       }) 
       GenerateCalender(events); 
      }, 
      error: function (error) { 
       alert('failed' + error.getAllResponseHeaders()); 
      } 
     }) 

     function GenerateCalender(calendarevents) { 
      $('#calender').fullCalendar('destroy'); 
      $('#calender').fullCalendar({ 
       aspectRatio: 1.5, 
       defaultDate: new Date(), 
       timeFormat: 'HH:mm', 
       header: { 
        left: 'prev,next today', 
        center: 'title', 
        right: 'month' 
       }, 
       eventLimit: true, 
       eventColor: '#378006', 
       events: calendarevents, 
       eventClick: function (calEvent, jsEvent, view) {       
        $('#myModal #eventTitle').text(calEvent.title); 
        var $description = $('<div/>'); 
        $description.append($('<p/>').html('<b>Starttijd: </b>' + calEvent.start.format("DD-MMM-YYYY HH:mm ")));  
        if (calEvent.end != null) { 
         $description.append($('<p/>').html('<b>Eindtijd: </b>' + calEvent.end.format("DD-MMM-YYYY HH:mm "))); 
        } 
        $description.append($('<p/>').html('<b>Beschrijving: </b>' + calEvent.description)); 
        $('#myModal #pDetails').empty().html($description); 

        $('#myModal').modal(); 
       } 
      }) 
     } 
    }) 
</script> 

것은

output from <code>console.log()</code>

+0

'fullcanlendar'에 의해 반환 된'calendarevents' 배열과'calEvent' 객체에서 가져온'start'와'end' 속성의 값을 보여주십시오. 'end' 값이 유효한'moment' 입력이되고 나중에'start'가 null이됩니까? – traktor53

+0

관련 코드를 "작업"에 추가 할 수 있습니까? :) –

+0

@ traktor53 시작과 끝은 모두 datetime 객체이며, clear = begin = 이벤트 시작 날짜와 end는 이벤트 종료 날짜입니다. 둘 다 시작 EN 끝은 날짜이며, 둘 다 유효한 순간 입력입니다. 객체와 값을 볼 수있는 이미지를 추가했습니다. 캘린더 및 캘린더의 출력으로 이미지를 포스트에 추가했습니다. – Diceble

답변

1

시작과 끝 값은 시간을 포함 할 수있다. 표시된 테스트 데이터는 startend에 대해 정확히 같은 날짜를 제공합니다.

에 대한 설명서 end은 선택 사항이지만 다른 경우에는 "순간 개체"가됩니다.

(최소 테스트 케이스가 공급되지 않았기 때문에) 내 공제는 공급하지 않을 때 공급되지 않고 취급되는 동일하거나 start보다 이전, 그 end 일자/시간 값은, 누락 end 값 있다는 것 null으로 변환됩니다. 이는 start과 같을 때 end에서 null으로의 변환을 설명합니다.

+0

당신이 말한 것은 진실입니다. 왜냐하면 양쪽 끝과 시작은 정확하게 똑같은 것이므로 끝까지 뒤덮었습니다. 팁 고마워!:) – Diceble