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

时间:2017-08-07 14:50:59

标签: javascript angularjs google-visualization

我正在使用angularjs在谷歌图表上工作。我的功能工作正常,但问题是当我点击图例时它会抛出错误,这可以在浏览器控制台中看到,我知道错误是由于以下代码引起的:

$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中的行提示以注意警报,单击图例时,您可以在浏览器控制台中注意到错误。

1 个答案:

答案 0 :(得分:1)

如果selectedItem.row没有值,则默认情况下属性'c'将是未定义的。用检查包裹它以查看父对象是否首先存在。

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