Highcharts:无法使用AngularJS读取未定义的属性'parentGroup'

Posted

技术标签:

【中文标题】Highcharts:无法使用AngularJS读取未定义的属性\'parentGroup\'【英文标题】:Highcharts :Cannot read property 'parentGroup' of undefined with AngularJSHighcharts:无法使用AngularJS读取未定义的属性'parentGroup' 【发布时间】:2017-11-11 07:14:45 【问题描述】:

我正在使用 highChart 和 angularJS 制作图表。 我关注这个highChart。

这是我的代码:

AngularJS:

app.directive('hcPieChart', function () 

return 
    restrict: 'E',
    template: '<div></div>',
    scope: 
        title: '@',
        data: '='
    ,
    link: function (scope, element) 
        Highcharts.chart(element[0], 
            chart: 
                type: 'pie'
            ,
            title: 
                text: scope.title
            ,
            plotOptions: 
                pie: 
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: 
                        enabled: true,
                        format: '<b>point.name</b>: point.percentage:.2f %'
                    
                
            ,
            series: [
                data: scope.data
            ]
        );
    
;
);

app.controller('ChartsController', function ($scope) 
var ids =location.search;
$scope.Stats=function()

           $http.get(url+"/Stats"+ids) 
            .success(function(data)
                $scope.Stat = data;
            ).error(function(err,data)
                console.log("error:" +data);
            ); 
        ;      
        $scope.Stats();
/*$scope.Stat = [
              "Validate":17.456789,
              "NotValidate":2.96296,
              "Nb_V":2.96296,
              "Nb_Not_v":2.96296
          ];
 */
       // Sample data for pie chart
            $scope.pieData = [
                    name: 'CheckLists Socred',
                    y:  $scope.Stat[0].Validate,
                    color: '#00c853'
                ,
                    name: 'CheckLists Not Socred',
                    y: $scope.Stat[0].NotValidate,
                    color: '#b71c1c'
            ];
);

html 代码:

<html >
<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
    <script type="text/javascript" src="https://code.highcharts.com/highcharts.js"></script>
</head>
<body  ng-app="app" ng-controller="ChartsController" >
     <hc-pie-chart title="Browser usage" data="pieData">Placeholder for pie chart</hc-pie-chart>

</body>
</html>

我得到了这张图表

当来自图表海报时,我有这个问题:

未捕获的类型错误:无法读取未定义的属性“parentGroup” 在 k.setState (App/Template/highcharts/highcharts.js:392:112) 在 App/Template/highcharts/highcharts.js:207:54 在 Array.forEach (本机) 在 a.each (App/Template/highcharts/highcharts.js:27:360) 在 a.Pointer.runPointActions (App/Template/highcharts/highcharts.js:207:32) 在 k.onMouseOver (App/Template/highcharts/highcharts.js:389:130) 在 SVGGElement.c (App/Template/highcharts/highcharts.js:380:323)

plnkr

谢谢你帮助我,

【问题讨论】:

你能在 jsfiddle 例子中重现它吗? (你可以从类似的东西开始:jsfiddle.net/6vayegnk) 我使用了 jsfiddle,但无法正常工作 jsfiddle 当你让它工作时告诉我。或者您可以使用其他工具,例如 plunker 等。 我认为不是工具问题。但是代码中有问题plnkr 你的 script.js 是空的......你的 html 标签也有问题。 【参考方案1】:

我有同样的问题,没有一个答案能帮助我。几个小时后,我发现作为图表数据馈送发送到 highchart 组件的数组导致了问题。 关键是,y 轴记录必须命名为 'y' ,而不是任何其他任意名称。

我的数据以前是这样的:

data = [name: "n1", income: 1491,
name: "n2", income: 103103,
name: "n3", income: 126886,
 name: "n4", income: 88]

当我把它改成:

data = [name: "n1", y: 1491,
name: "n2", y: 103103,
name: "n3", y: 126886,
 name: "n4", y: 88]

问题解决了。

【讨论】:

【参考方案2】:

根据$scope.Stat 数组对象,您可以以$scope.Stat[0].Validate 的身份访问每个对象

Forked Plunker

$scope.pieData = [
 name: 'CheckLists Socred',
                y:  $scope.Stat[0].Validate,
                color: '#00c853'
            ,
                name: 'CheckLists Not Socred',
                y: $scope.Stat[0].NotValidate,
                color: '#b71c1c'
        ];

【讨论】:

感谢您的回复@,我尝试这样做但它返回此错误消息; Can not read property 'resConforme' of undefined 我在上面的 plunker 中找不到,您能否详细说明错误 $Scope.Stat 它的内容是从 angularJS 中的另一个函数填充的。如何创建一个全局变量?我更新了帖子。 @深 你能在$scope.Stats()之后使用console,log($scope.Stat)检查并发现错误 显示其[object Object]

以上是关于Highcharts:无法使用AngularJS读取未定义的属性'parentGroup'的主要内容,如果未能解决你的问题,请参考以下文章

angularjs+highcharts开发

ng升级两个版本的Highcharts,错误16

Highcharts / Highmaps with Angular - 无法运行演示

无法更新 highcharts 的数据

AngularJS引入Echarts的Demo

在调整窗口大小之前,响应式 Highcharts 无法正确调整大小