TypeError: Невозможно прочитать свойство 'getTime' из неопределенного

0

У меня проблема при попытке использовать DayPilot Calendar в angularjs.

https://code.daypilot.org/63034/angularjs-event-calendar-open-source

Когда я загружал исходники и использовал их, он не работал и бросал ошибку

angular.js:9563 TypeError: Cannot read property 'getTime' of undefined
    at loadEvents (daypilot-all.min.js:11)
    at update (daypilot-all.min.js:11)
    at Object.fn (daypilot-all.min.js:11)
    at h.$digest (angular.js:12031)
    at h.$apply (angular.js:12279)
    at g (angular.js:7991)
    at C (angular.js:8196)
    at XMLHttpRequest.y.onreadystatechange (angular.js:8137)

Исходный код загруженного кода

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DayPilot: AngularJS Event Calendar</title>

        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
<script src="js/daypilot/daypilot-all.min.js" type="text/javascript"></script>
        <!-- helper libraries -->
    <script src="js/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>

    <!-- daypilot libraries -->
        <script src="js/daypilot/daypilot-all.min.js" type="text/javascript"></script>

        <link type="text/css" rel="stylesheet" href="media/layout.css" />    

    </head>
    <body>
        <div id="header">
            <div class="bg-help">
                <div class="inBox">

                    <hr class="hidden" />
                </div>
            </div>
        </div>
        <div class="shadow"></div>
        <div class="hideSkipLink">
        </div>
        <div class="main">

            <div ng-app="main" ng-controller="DemoCtrl" >

                <div style="float:left; width: 160px">
                    <daypilot-navigator id="navi" daypilot-config="navigatorConfig" ></daypilot-navigator>
                </div>
                <div style="margin-left: 160px">
                    <div class="space">
                        <button ng-click="showDay()">Day</button>
                        <button ng-click="showWeek()">Week</button>
                    </div>
                    <daypilot-calendar id="day" daypilot-config="dayConfig" daypilot-events="events" ></daypilot-calendar>
                    <daypilot-calendar id="week" daypilot-config="weekConfig" daypilot-events="events" ></daypilot-calendar>                
                </div>
            </div>

            <script>
                var app = angular.module('main', ['daypilot']).controller('DemoCtrl', function($scope, $timeout, $http) {
                    $scope.events = [];

                    $scope.navigatorConfig = {
                        selectMode: "day",
                        showMonths: 3,
                        skipMonths: 3,
                        onTimeRangeSelected: function(args) {
                            $scope.weekConfig.startDate = args.day;
                            $scope.dayConfig.startDate = args.day;                            
                            loadEvents();
                        }
                    };

                    $scope.dayConfig = {
                        viewType: "Day",
                        onTimeRangeSelected: function(args) {
                            var params = {
                                start: args.start.toString(),
                                end: args.end.toString(),
                                text: "New event"
                            };

                            $http.post("backend_create.php", params).success(function(data) {
                                $scope.events.push({
                                    start: args.start,
                                    end: args.end,
                                    text: "New event",
                                    id: data.id
                                });
                            });
                        },
                        onEventMove: function(args) {
                            var params = {
                                id: args.e.id(),
                                newStart: args.newStart.toString(),
                                newEnd: args.newEnd.toString()
                            };

                            $http.post("backend_move.php", params);
                        },
                        onEventResize: function(args) {
                            var params = {
                                id: args.e.id(),
                                newStart: args.newStart.toString(),
                                newEnd: args.newEnd.toString()
                            };

                            $http.post("backend_move.php", params);
                        },
                        onEventClick: function(args) {
                            var modal = new DayPilot.Modal({
                                onClosed: function(args) {
                                    if (args.result) {  // args.result is empty when modal is closed without submitting
                                        loadEvents();
                                    }
                                }
                            });

                            modal.showUrl("edit.php?id=" + args.e.id());
                        }
                    };

                    $scope.weekConfig = {
                        visible: false,
                        viewType: "Week",
                        onTimeRangeSelected: function(args) {
                            var params = {
                                start: args.start.toString(),
                                end: args.end.toString(),
                                text: "New event"
                            };

                            $http.post("backend_create.php", params).success(function(data) {
                                $scope.events.push({
                                    start: args.start,
                                    end: args.end,
                                    text: "New event",
                                    id: data.id
                                });
                            });
                        },
                        onEventMove: function(args) {
                            var params = {
                                id: args.e.id(),
                                newStart: args.newStart.toString(),
                                newEnd: args.newEnd.toString()
                            };

                            $http.post("backend_move.php", params);
                        },
                        onEventResize: function(args) {
                            var params = {
                                id: args.e.id(),
                                newStart: args.newStart.toString(),
                                newEnd: args.newEnd.toString()
                            };

                            $http.post("backend_move.php", params);
                        },
                        onEventClick: function(args) {
                            var modal = new DayPilot.Modal({
                                onClosed: function(args) {
                                    if (args.result) {  // args.result is empty when modal is closed without submitting
                                        loadEvents();
                                    }
                                }
                            });

                            modal.showUrl("edit.php?id=" + args.e.id());
                        }                        
                    };

                    $scope.showDay = function() {
                        $scope.dayConfig.visible = true;
                        $scope.weekConfig.visible = false;  
                        $scope.navigatorConfig.selectMode = "day";
                    };

                    $scope.showWeek = function() {
                        $scope.dayConfig.visible = false;
                        $scope.weekConfig.visible = true;                    
                        $scope.navigatorConfig.selectMode = "week";
                    };

                    loadEvents();

                    function loadEvents() {
                        // using $timeout to make sure all changes are applied before reading visibleStart() and visibleEnd()
                        $timeout(function() {
                            var params = {
                                start: $scope.week.visibleStart().toString(),
                                end: $scope.week.visibleEnd().toString()
                            }
                            $http.post("backend_events.php", params).success(function(data) {
                                $scope.events = data;
                            });              
                        });
                    }
                });
            </script>


        </div>
        <div class="clear">
        </div>        
    </body>
</html>
 <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>

я все еще смущен, почему эта проблема возникает снова и снова

Теги:
daypilot

1 ответ

0

Вы должны проверить ответ, возвращенный "backend_events.php". DayPilot ожидает массив событий в формате JSON. Если в сценарии есть какая-либо ошибка на стороне сервера, ответ будет возвращать сообщение об ошибке.

Скорее всего, существует проблема с разрешениями на стороне сервера - для PHP-скрипта необходимы разрешения на чтение/запись для файла daypilot.sqlite, который находится в корне приложения.

  • 0
    Я проверил весь файл .php, даже изменив его на чистый файл значений json, так и не поняв, почему это происходит ..
  • 0
    Я пробовал загрузить новую версию Ubuntu, и она работает нормально. Вы что-нибудь изменили в исходном коде?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню