Highcharts 图不随 firebase 更新

Highcharts graph does not update with firebase

$scope.hhData = $firebaseArray(aRef.orderByChild('ts').startAt('2018-07-02').limitToLast(50));
$scope.hhData.$loaded().then(function () {
            $scope.chartSeriesYArray = [];
            $scope.chartSeriesXArray = [];
            $scope.hhData.$watch(function() {

            angular.forEach($scope.hhData, function (value) {
                $scope.chartSeriesXArray.push(moment(value.ts).format('MMMM Do YYYY, h:mm:ss'));
                $scope.chartSeriesYArray.push(parseFloat(value.ein));
            });

            Highcharts.chart('chart', {
                chart: {
                    type: 'column'
                },
                title: {
                    text: 'Half Hourly Energy Consumption'
                },
                xAxis: {
                    categories: $scope.chartSeriesXArray,
                    crosshair: true
                },
                yAxis: {
                    min: 0,
                    title: {
                        text: 'Energy (kwh)'
                    }
                },
                series: [{
                    name: 'Meter01',
                    data: $scope.chartSeriesYArray
                }]
            });
        });
});

我希望能够将来自 Firebase 的数据实时更新到图表中。但是,此代码只允许数据在开始时更新一次,并且永远不会再次更新自身。有什么办法可以解决这个问题吗? - 按照建议尝试了 $interval 方法,但没有用 :(

更新:我用 $watch 做到了。然而,这意味着我的图表只会在有数据传入时显示。如果没有数据传入(例如:当您刚刚打开系统时),那么根本不会显示任何图表。这还有另一种解决方法

尝试使用 $interval 服务在一定时间后检索您的数据。

    $interval(function() {
$scope.hhData.$loaded().then(function () {
            $scope.chartSeriesYArray = [];
            $scope.chartSeriesXArray = [];

            angular.forEach($scope.hhData, function (value) {
                $scope.chartSeriesXArray.push(moment(value.ts).format('MMMM Do YYYY, h:mm:ss'));
                $scope.chartSeriesYArray.push(parseFloat(value.ein));
            });

            Highcharts.chart('chart', {
                chart: {
                    type: 'column'
                },
                title: {
                    text: 'Half Hourly Energy Consumption'
                },
                xAxis: {
                    categories: $scope.chartSeriesXArray,
                    crosshair: true
                },
                yAxis: {
                    min: 0,
                    title: {
                        text: 'Energy (kwh)'
                    }
                },
                series: [{
                    name: 'Meter01',
                    data: $scope.chartSeriesYArray
                }]
            });
        });
       }, 5000); //this function will run every 5 seconds

*别忘了你还需要在你的控制器中添加$interval参数,间隔以毫秒为单位

app.controller('myCtrl',["$scope", "$interval", function($scope, $interval) {
    //code goes here
}]);