javascript - 在 Angular js 中使用 json 数据填充 Highchart

标签 javascript jquery angularjs json highcharts

我正在尝试将数据从 json 文件填充到 Highchart。我的示例 json 文件与 Highchart 示例相同,我的 data.json 为:

{"yData":[{
            "name": "Tokyo",
            "data": [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
        }, {
            "name": "New York",
            "data": [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
        }, {
            "name": "Berlin",
            "data": [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
        }, {
            "name": "London",
            "data": [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
        }]}

我的html文件是

<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>High chart using directive</title>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
  <script src="http://code.highcharts.com/highcharts.js"></script>
  <script type="text/javascript" src="script.js"></script>  
 </head>
 <body>
  <section ng-app="charts">
   <div ng-controller="Ctrl">
        <highchart chart='{{renderChart}}'></highchart>
        <table>
            <tr ng-repeat="record in jsondatafeed">
                <td>{{record.Name}}</td>
                <td>{{record.Score}}</td>
            </tr>
        </table>
   </div>
  </section>
 </body>
</html>

var app = angular.module('charts', []);

app.directive('highchart', function () {
return {
    restrict: 'E',
    template: '<div></div>',
    replace: true,

    link: function (scope, element, attrs) {

        scope.$watch(function () { return attrs.chart; }, function () {

            if (!attrs.chart) return;

            var charts = JSON.parse(attrs.chart);

            $(element[0]).highcharts(charts);

        });
    }
};
});


app.controller('Ctrl', function ($scope, $http, $timeout) {
$http.get('data.json').success(function (data, status) {

    var score = [];
    

    var name = [];
    for (var i = 0; i < data.length; i++) {
        name.push(data[i].Name);
		for (var j = 0; j < data.length; j++) {
        score.push(data[j].Score);   
    }
    }

    $scope.renderChart = {
        chart: {
            type: 'line'
        },
        xAxis: {
            categories:['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
		yAxis: {
            title: {
                text: 'Temperature (°C)'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },
        series: [{
			name: name,
            data: score
        }],
		
		
        legend: {
            enabled: false
        }
    };
}).error("error message");
$timeout($scope.fetch, 1000);
});

现在我可以只填充一个名称和数据的图表 current output

但我需要从 json 文件提供所有数据。我在这里想念的是什么? 问候, 维诺斯·卡南 P

最佳答案

您需要将数据数组推送到系列中,

    $scope.jsondatafeed = data.yData;
    console.log($scope.jsondatafeed);
    $scope.Plotcat = [];
    $scope.PlotData = [];
    for (var key in $scope.jsondatafeed) {
      console.log($scope.jsondatafeed[key]); // the whole array (index)
      $scope.PlotData.push($scope.jsondatafeed[key]);
      var category = $scope.jsondatafeed[key];
      $scope.Plotcat.push(category.name);
    }

这是DEMO APP

关于javascript - 在 Angular js 中使用 json 数据填充 Highchart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39067098/

相关文章:

javascript - 在 moment.js 中使用什么日期格式?

javascript - 单击按钮时如何添加加载动画?

javascript - jQuery 悬停/隐藏/显示 - 将鼠标悬停在多个图像上时,并非所有文本都会正确消失

jquery - 在 JQuery 中使用 !important 更改 CSS - 使用 Bootstrap 3

AngularJS:如何将 $scope 变量绑定(bind)到另一个 $scope.variable

javascript - Angular SC.get 中的 Soundcloud API 不暂停

javascript - 即兴 - 简单地将变量传递给 URL

angularjs - Angular 1.5 组件与指令 ng-transclude

angularjs - AngularJS ng-table固定 header

jquery - 使用 jQuery 在页面加载后使用 AJAX 填充页面