我想使用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/)上提供的示例。但是,我不明白为什么他们的例子工作得非常好而且我的,这提供了完全相同的数据,并没有。
答案 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 = [[]];