【问题标题】:Cannot read property 'event' of undefined FullCalandar.js无法读取未定义 FullCalandar.js 的属性“事件”
【发布时间】:2020-09-29 10:23:42
【问题描述】:

https://jsfiddle.net/studovey/jvrwfzea/21/

每次选择日视图时,我都会在 FullCalendar.js 中收到以下错误。下面的日期有一个事件,所以它会抛出错误。

我认为这可能与格式有关。我在网上寻找解决方案,但无济于事。

谁能分享一下?

我的代码如下:

    function GetAppointments() {
        var initialLocaleCode = 'en';
        $('#calender').fullCalendar('destroy');
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next,today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            buttonText: {
                today: 'Today',
                month: 'Month',
                week: 'Week',
                day: 'Day'
            },
            footer: true,
            selectable: true,
            height: 650,
            events: function (start, end, timezone, callback) {
                $.ajax({
                    type: "GET",
                    contentType: "application/json",
                    url: '@Url.Action("GetAppointmentData", "Admin")',
                    dataType: "JSON",
                    selectable: true,
                    locale: 'en',
                    titleFormat: "YYYY-MM-DD HH:mm:ss",
                    success: function (data) {
                        var events = [];
                        $.each(data, function (i, data) {
       var start = data.start;
                            var end = data.end;
                            events.push({
                                eventID: data.Id,
                                title: data.title,
                                description: data.description,
                                start: start,
                                end: end,
                                backgroundColor: data.type.TypeColour,
                                textColor: 'white',
                                borderColor: 'white',
                                allDay: false,
                            });
                        });
                        callback(events);
                    }
                })
            },

            nextDayThreshold: '00:00:00',
            editable: true,
            droppale: true,
            nowIndicator: true,
            eventClick: function (info) {
                GetEventDetailByEventId(info);
            }
        });
        $(".fc-day-header").addClass("bg-success");
        $(".fc-day-header").css("color", "white");
        $(".fc-button, .fc-agendaWeek-button, .fc-state-hover").addClass("bg-success");


    }
        // Grab individual elements from the combined HTML string. Use each as the default rendering.
            // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.
            $(html).each(function (i, node) {
                var seg = segs[i];
                var el = view.resolveEventEl(seg.event, $(node));

                if (el) {
                    el.data('fc-seg', seg); // used by handlers
                    seg.el = el;
                    renderedSegs.push(seg);
                }
            });
        }

    function GetEventDetailByEventId(eventinfo) {
        $.ajax({
            type: "POST",
            url: '@Url.Action("GetAppointmentById", "Admin")',
            dataType: "JSON",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({
                'id': eventinfo.id
            }),

            success: function (data) {
                $('#appointmentHeader').removeClass('bg-success');
                $('#appointmentHeader').addClass('bg-info');
                $('#btnUpdate').removeClass('d-none');
                $('#btnDelete').removeClass('d-none');
                 $('#btnAdd').addClass('d-none');
                $('#headerText').html('Update Appointment');
                $('#btnBackAdd').removeClass('d-none');
                $('#txtTitle').val(data.Name);
                $('#txtName').val(data.Info);
                $('#txtStartDate').val(moment(data.StartTime).format("DD-MM-YYYY HH:mm"));
                $('#txtEndDate').val(moment(data.EndTime).format("DD-MM-YYYY HH:mm"));
                $('#hdnAppointmentId').val(data.Id);
                $('#drptype').val(data.type.Id);

            }
        })


    }

【问题讨论】:

  • 这可能与您的问题无关,但仅供参考 selectable: true, locale: 'en', titleFormat: "YYYY-MM-DD HH:mm:ss", 不是 AJAX 选项,它们是 fullCalendar 选项。我认为你把它们放错了地方。
  • 嗨@ADyson,这不是但这是一个开始谢谢你
  • 你能提供一个像 js fiddle 这样的代码的最小工作示例吗?
  • 4641中的代码是什么?你也可以分享 GetEventDetailByEventId(info) 这个函数
  • 嗨 @FerhatBAŞ 我现在已经分享了原始截图中的内容

标签: javascript jquery model-view-controller fullcalendar fullcalendar-3


【解决方案1】:

您是否检查过您是否获得了传递给函数的data.StartTimedata.EndTime 的预期值?错误event of undefined 可能来自moment。我曾经遇到过。

【讨论】:

  • 嗨 Chintan,我在原始帖子中分享了我的 console.log 的屏幕截图,看起来正确的开始日期正在被拉出。感谢您的意见
  • 这里似乎确实存在问题,如果我将开始更改为硬编码:moment("2020-09-30 15:30:25").format("YYYY-MM-DD HH :mm:ss"),它可以工作,如果我改回 data.StartTime 我得到错误。有什么建议吗?
  • 检查 data.StartTime 的值,并将 console.log 语句放在带有 moment 的语句的正上方。看看你是否在那里得到了预期的价值。它应该可以帮助您更接近问题的原因。
  • 另外,您添加到问题中的屏幕截图 - 它的属性名称与您正在访问的属性名称不同。例如,屏幕截图具有titlestartend 等属性,而在代码中您尝试访问data.StartTime。该转换是否按预期工作?这个问题也可能潜伏在那里。
  • 嗨 Chintan,感谢您的回复,我在挖掘错误时更改了这些内容,并刚刚更新了原始帖子。开始和结束作为“开始”:“2020-09-04 09:45:00”,“结束”:“2020-09-04 12:45:00”。当我用硬编码输入它时,它的 Json 不起作用。
猜你喜欢
  • 2020-11-18
  • 1970-01-01
  • 2023-03-26
  • 2018-03-05
  • 2021-12-14
  • 2019-05-23
  • 1970-01-01
  • 2021-11-24
相关资源
最近更新 更多