1

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

我从我的 RequestService 获得“shipdata”,其中包括一个类型、一个小时和每个类型和小时的计数。所以它看起来像这样:

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.data0: 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/ ) 上提供的示例。但是我不明白为什么他们的例子工作得很好,而我的例子却提供了完全相同的数据,却没有。

4

1 回答 1

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 = [[]];
于 2015-11-03T11:58:26.653 回答