javascript - 触发 OnClick 时对象属性变为 null

标签 javascript jquery fullcalendar

我制作了一个创建日历的 javascript 函数。要创建日历,我使用 fullcalendar。在代码中,您可以看到我进行了 ajax 调用以获取日历应包含的事件。发生的问题是,在我单击该事件后,它的一个属性变为空。单击事件以查看其详细信息后,属性“end”变为空。令我困惑的是,当我在 eventclick 方法“end”中使用 console.log“calendarevents”时,它不是空的,但是当我使用控制台记录“calEvent”并查看其源(显示源数组)并查看右侧时项目,它确实说“结束”为空。我对此完全感到困惑。我希望你们看到我做错了什么并能帮助我:)提前谢谢你们!

 <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>

最佳答案

开始值和结束值可能包括时间。显示的测试数据为 startend 提供了完全相同的日期。

eventObject 的文档声明 end 是可选的,但否则“成为”一个时刻对象。

我的推论(因为没有提供最小测试用例)是 endstart 相同或早于 start 的日期/时间值被视为不是被提供,当没有被提供时,缺少的 end 值被转换为 null。这将解释 endstart 相同时到 null 的转换。

关于javascript - 触发 OnClick 时对象属性变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47561293/

相关文章:

PHP MYSQL 事件调度程序,如 Musicteacherhelper.com

Javascript setInterval 问题

javascript - 为什么我无法将此消息传递给选项卡中运行的所有框架?

javascript - 语法错误: Expected corresponding JSX closing tag for &lt;input&gt;

javascript - 将调整大小功能添加到 asp 文本框

javascript - jQuery setInterval 不起作用

javascript - 具有动态高度和绝对位置的子 DIV - 将高度赋予父 DIV

javascript - Selectize.js:给定类方法时不调用 onItemAdd 属性

javascript - fullcalendar - 以dayGridWeek显示时间

javascript - 如何在 Fullcalendar 的 resourceTimeGridDay 中获取 eventReceive 上的资源 id