错误:TypeError:无法读取未定义的属性'c'

问题描述:

我正在使用angularjs在google图表上工作。我的功能工作正常,但问题是,当我在它抛出,可以在浏览器控制台中可以看出错误的传奇点击,我知道该错误的,因为下面的代码引起:错误:TypeError:无法读取未定义的属性'c'

$scope.serverId = chart1.data.rows[selectedItem.row].c[3].v; 
alert("serverid : " + $scope.serverId); 

以上当用户单击图表中的任何一行并返回ID时,需要使用代码来获取分配的服务器ID,问题在于当用户单击图例时,必须禁用图表中的相应行,并在此场景经过测试,我可以在浏览器控制台中看到错误。任何输入如何解决该错误?

TypeError: Cannot read property 'c' of undefined 
    at $$childScopeClass.$scope.seriesSelected 

我还想让代码获得serverID。演示的Click here。请点击demo plunker中的提示来注意警报,当点击图例时,您可以注意到浏览器控制台中的错误。

+0

重击者为我工作。 –

+0

@MikeFeltman不,如果你点击右边的图例 – JeanJacques

如果没有selectedItem.row的值,那么属性'c'默认为undefined。用一个检查来检查父对象是否先存在。

if (chart1.data.rows[selectedItem.row]) { 
     $scope.serverId = chart1.data.rows[selectedItem.row].c[3].v; 
     alert("serverid : " + $scope.serverId); 
    } 
+0

谢谢,它的工作@Brian – user8373379

+0

现在我可以通过选择图例隐藏数据,我可以选择隐藏数据的图例,如果图表上没有数据可见我选择了所有的传奇。我希望至少有一行应该在图形上可见。有一种方法可以处理,如果用户选择3个图例禁用4个图例并再次选择第4个图例,则不应允许用户选择它,而不是抛出警报/消息说不能隐藏所有的信息。 – user8373379