google charts

two-way binding

在开始之前,我们先来看一下如何使用Google Charts API。 就此应用而言,我们将坚持使用一些基本图表,例如折线图,饼图等。

Google图表

以下示例直接来自Google Charts文档,提供了有关如何使用Google Charts API的快速入门。 第一个脚本加载AJAX API。 在第二个脚本中,第一行加载Visualization API和linechart包。 第二行设置了在加载Google Visualization API时运行的回调。 回调函数创建一个数据表,设置一些图表选项,实例化我们的图表并创建图表。

<html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('visualization', '1', {packages:['corechart']});
      google.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales', 'Expenses'],
          ['2004',  1000,      400],
          ['2005',  1170,      460],
          ['2006',  660,       1120],
          ['2007',  1030,      540]
        ]);
        var options = {
          title: 'Company Performance'
        };
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;"></div>
  </body>
</html>

如果您不熟悉此API,或者需要复习一下,建议您阅读Google Charts文档。

AngularJS

在开始使用Angular之前,您应该:

在终端上,导航到种子项目,然后输入以下命令:

cd angular-seed  node scripts/web-server.js

您应该看到以下消息输出到控制台:

HTTP Server running at http://localhost:8000/
http://localhost:8000/app/index.html

Angular使用MVC(模型-视图-控制器)设计模式。 在本教程中,我们将专注于控制器。 目前,将Controller视为处理页面特定部分并使用View呈现数据的逻辑。 一旦开始编写应用程序,我们将更好地了解控制器是什么。

app/js

构建应用

index.html
<!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
  <meta charset="utf-8">
  <title>My AngularJS App</title>
</head>
<body>
  <div ng-controller="MyCtrl1">{{name}}</div>
  <script src="lib/angular/angular.js"></script>
  <script src="lib/angular/angular-route.js"></script>
  <script src="js/app.js"></script>
  <script src="js/services.js"></script>
  <script src="js/controllers.js"></script>
  <script src="js/filters.js"></script>
  <script src="js/directives.js"></script>
</body>
</html>

控制器

如前所述,控制器包含处理页面特定部分的逻辑。 在前面的代码示例中,请注意以下行:

<div ng-controller="MyCtrl1">{{name}}</div>
divng-controllerMyCtrl1MyCtrl1app/js/controllers.jsng-controllerng-controller
{{name}}MyCtrl1name$scope$scopecontrollers.js
'use strict';

/* Controllers */

angular.module('myApp.controllers', []).
  controller('MyCtrl1', ['$scope',
    function($scope) {
      $scope.name = 'Jay';
    }
])
  .controller('MyCtrl2', [
    function() {

    }
]);
$scopename
node scripts/web-server.js
http://localhost:8000/app/index.html

创建图表

index.html
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
index.htmldiv
<div ng-controller="MyCtrl1" id="chartdiv"></div>
controllers.js
google.load('visualization', '1', {packages:['corechart']});

加载包后,我们需要初始化Angular应用。

google.setOnLoadCallback(function() {
  angular.bootstrap(document.body, ['myApp']);
});
angular.bootstrap
'use strict';

/* Controllers */
google.load('visualization', '1', {
  packages: ['corechart']
});

google.setOnLoadCallback(function() {
  angular.bootstrap(document.body, ['myApp']);
});

angular.module('myApp.controllers', []).
  controller('MyCtrl1', ['$scope',
    function($scope) {
      var data = google.visualization.arrayToDataTable([
        ['Year', 'Sales', 'Expenses'],
        ['2004', 1000, 400],
        ['2005', 1170, 460],
        ['2006', 660, 1120],
        ['2007', 1030, 540]
      ]);
      var options = {
        title: 'Company Performance'
      };
      var chart = new google.visualization.LineChart(document.getElementById('chartdiv'));

      chart.draw(data, options);
    }
  ])
    .controller('MyCtrl2', [
      function() {

      }
  ]);
index.htmlhtmlng-app="myApp"ng-app
angular.bootstrap(document.body, ['myApp']);
http://localhost:8000/app/index.html

结论

在本教程的这一部分中,我们重点介绍Angular控制器。 在下一篇文章中,我们将重点介绍伪指令和$ scope的使用。 同时,本文的所有代码都可以在GitHub上获得 。

google charts