无法在Angular App中加载Google图表

时间:2014-03-26 20:03:08

标签: angularjs google-visualization

以下是我正在加载的页面控制器的摘录(在coffeescript中 - 但应该直接阅读)。一旦我从服务器获得数据,我将其转换为数组的json数组。然后onChartDataReady运行,通过http状态为200的jsapi加载3个文件,但是从不调用onGoogleReady。

onDataLoad: (data) =>
    # @$scope.chartData = transformed data
    @onChartDataReady()

onChartDataReady: =>
    google.load 'visualization', '1', { packages: ['corechart'] }
    google.setOnLoadCallback @onGoogleReady

onGoogleReady: =>
    chartTable = google.visualization.arrayToDataTable @$scope.chartData
    chartOptions = { title: 'Some silly data' }
    chart = new google.visualization.LineChart document.getElementById('chart_div')
    chart.draw chartTable, chartOptions            

我从谷歌复制了quickstart代码并将其粘贴到没有控制器的html文件中(即angular只是加载html)但它有同样的问题 - 不调用回调。当我从桌面打开文件时,它工作正常。不知何故,角度干扰谷歌回调,我不知道如何排除故障。

任何指针都会非常有用!感谢。

1 个答案:

答案 0 :(得分:0)

这可能与谷歌加载​​器中的奇怪行为有关。尝试使用google.load调用内联回传,而不是调用google.setOnLoadCallback。 javascript看起来像这样:

google.load('visualization', '1', { packages: ['corechart'], callback: <callback function> });

我不是coffescript专家,但我认为这是你要使用的语法:

google.load 'visualization', '1', { packages: ['corechart'], callback: @onGoogleReady }