Angularjs 无法读取未定义的属性“length”

Angularjs 无法读取未定义的属性“length”,angularjs,Angularjs,我的角度JS函数有问题 当我第一次调用这个函数时,一切都很好。但我的下一次尝试导致了一个错误,并阻止了它的工作 我的js代码: $scope.updateUptimeCalendar = function() { $scope.loadHeatMap(); $scope.getMonthHeatMap(new Date().getFullYear(), new Date().getMonth()); }; $scope.loadHeatMapData = functi

我的角度JS函数有问题 当我第一次调用这个函数时,一切都很好。但我的下一次尝试导致了一个错误,并阻止了它的工作

我的js代码:

     $scope.updateUptimeCalendar = function() {
    $scope.loadHeatMap();
    $scope.getMonthHeatMap(new Date().getFullYear(), new Date().getMonth());
};

$scope.loadHeatMapData = function (date) {
    var time = date.getTime();
    var isMonthLoaded = false;

    var eps = 1000 * 60 * 60 * 6; // epsilont +-6 hours
    angular.forEach($scope.heatMatData, function (record) {
        if (!isMonthLoaded) {
            if (Math.abs(record.date - time) < eps) {
                isMonthLoaded = true;
            }
        }
    });
    if (!isMonthLoaded) {
        $scope.getMonthHeatMap(date.getFullYear(), date.getMonth());
    };
};

$scope.getMonthHeatMap = function(fullYear, month) {
    $scope.setLoadingState(true);

    var monthStart = new Date(Date.UTC(fullYear, month, 1));
    var monthEnd;
    if (month == 12) {
        monthEnd = new Date(Date.UTC(fullYear + 1, 1, 1));
    } else {
        monthEnd = new Date(Date.UTC(fullYear, month + 1, 1));
    };

    monthStart = monthStart.getTime();
    monthEnd = monthEnd.getTime();

    var turnOnDuration;
    $http.post('Statistic/GetClientStateStatisticByDays', {
        clientId: $scope.$parent.clientForStatistic.ClientId,
        stateId: 1,
        beginPeriod: monthStart,
        endPeriod: monthEnd
    }).success(function(data) {
        $scope.$parent.processResponse(data);
        angular.forEach(data, function(record) {
           turnOnDuration = record.Duration / (1000 * 60 * 60);
            $scope.heatMatData.push({
                date: record.AvarageTime,
                value: Number((turnOnDuration).toFixed(0)),
            });
        });
        $scope.heatMatData.sort(function(a, b) {
            return a.date - b.date;
        });
        //todo: fixed this when try to get null data values DK
        $scope.setLoadingState(false);
        $scope.cal.update($scope.heatMatData);
    });
};

$scope.heatMapDateParser = function (data) {
    var stats = {};
    for (var d in data) {
        stats[data[d].date / 1000] = data[d].value;
    }
    return stats;
};

$scope.loadHeatMap = function () {
    $('#statistic-modal-chart-container').empty();
    $('#statistic-modal-chart-container-calendar').empty();
    $scope.cal = new CalHeatMap();
    $scope.cal.init({
        data: $scope.heatMatData,
        afterLoadData: $scope.heatMapDateParser,
        considerMissingDataAsZero: true,

        //todo: use to set visible dates interval. MR
        //minDate: new Date(2014, 9),
        //maxDate: new Date(),

        itemSelector: "#statistic-modal-chart-container-calendar",
        domain: "month",
        domainLabelFormat: "%b %Y",
        subDomain: "x_day",
        subDomainTextFormat: "%d",
        itemName: "Hour",
        cellSize: 35,
        range: 1,

        displayLegend: true,
        legend: [0, 4, 8, 12, 16, 20, 25],
        legendColors: {
            base: '#ededed',
            empty: '#ededed',
            min: '#FFFFFF',
            max: '#3366FF'
        },
        legendHorizontalPosition: "center",
        previousSelector: "#uptime-calendar-prev",
        nextSelector: "#uptime-calendar-next",
        afterLoadNextDomain: function (date) {
            $scope.loadHeatMapData(date);
        },
        afterLoadPreviousDomain: function (date) {
            $scope.loadHeatMapData(date);
        },

        itemNamespace: "animationDuration-a",
        tooltip: true
    });
};
请任何人帮帮我

Put

$scope.heatMatData = [];

第一条指令插入到文件开头
$scope.heatMatData = [];