无法读取"标签"的属性未定义的

时间:2015-11-03 11:21:32

标签: javascript angularjs charts bar-chart angular-chart

我想使用Chart.js(1.0.2)和angular-chart.js(0.8.5)构建一个简单的条形图。我读了很多关于这个问题的其他文章,但没有任何帮助。所以情况就是这样:

我得到" shipdata"来自我的RequestService,其中包括每种类型和小时的类型,小时和计数。所以它看起来像这样:

Object {hour: "0", type: "9", count: "66"} Object {hour: "0", type: "3", count: "195"}

然后我选择独特的小时和类型:小时是我的标签,类型是系列。之后我构建了数据数组。这完全没问题,因此我最终得到了:

$ scope.labels ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "17", "18"]

$ scope.series ["0", "2", "3", "4", "6", "7", "8", "9"]

$ scope.data 0: Array[10]1: Array[10]2: Array[10]3: Array[10]4: Array[10]5: Array[10]6: Array[10]7: Array[10]8: Array[10]9: Array[10]10: Array[10]11: Array[10]12: Array[10]17: Array[10]18: Array[10]

我在命令行中打印了这些结果。

现在每次调用$ scope.getChartData()函数时,都会出现以下错误:

TypeError:无法读取属性'标签'未定义的

以下是$scope.getChartData()的代码: http://pastebin.com/7kWQ6W09

以下是视图:http://pastebin.com/0DvDcMBa

我尝试了几次在angular-js github页面(http://jtblin.github.io/angular-chart.js/)上提供的示例。但是,我不明白为什么他们的例子工作得非常好而且我的,这提供了完全相同的数据,并没有。

1 个答案:

答案 0 :(得分:0)

您是在服务调用之外初始化标签,为什么不在之后尝试初始化?

请尝试更改此

    var allData = [];
    $scope.series = [];
    $scope.labels = [];
    $scope.data = [[]];
    RequestService.getShipTypes(nelat, swlat, nelng, swlng, date, analyse)
            .success(function(ships) {

到这个

    RequestService.getShipTypes(nelat, swlat, nelng, swlng, date, analyse)
            .success(function(ships) {
    var allData = [];
    $scope.series = [];
    $scope.labels = [];
    $scope.data = [[]];