关键是在 Google 图表库加载后手动引导 Angular 模块:
http://jsfiddle.net/nCFd6/22/ http://jsfiddle.net/nCFd6/22/
App
var app = angular.module('app', []);
指示
app.directive('chart', function() {
return {
restrict: 'E',
replace: true,
scope: {
data: '=data'
},
template: '<div class="chart"></div>',
link: function(scope, element, attrs) {
var chart = new google.visualization.LineChart(element[0]);
var options = {};
scope.$watch('data', function(v) {
var data = google.visualization.arrayToDataTable(v);
chart.draw(data, options);
});
}
};
});
控制器
app.controller('ChartController', function($scope) {
$scope.scoreHistory = [];
$scope.loadDataFromServer = function() {
var x = [
['interval', 'count']
];
var scoreHistory = [
{
intervalStart: 12,
count: 20
},
{
intervalStart: 100,
count: 200
},
{
intervalStart: 200,
count: 50
},
{
intervalStart: 250,
count: 150
}
];
angular.forEach(scoreHistory, function(record, key) {
x.push([
record.intervalStart,
record.count
]);
});
$scope.scoreHistory = x;
};
});
Vodoo
google.setOnLoadCallback(function() {
angular.bootstrap(document, ['app']);
});
google.load('visualization', '1', {packages: ['corechart']});
View
<div ng-controller="ChartController">
<button ng-click="loadDataFromServer()">load data</button>
<chart data="scoreHistory"></chart>
</div>
正如您在此示例中看到的,我创建了一个图表指令,以便您可以重用它。