<!DOCTYPE html>
<html>
  <script type="text/javascript" src="http://code.angularjs.org/1.1.0/angular.min.js"></script>
  <script type="text/javascript" src="http://www.google.com/jsapi?ext.js"></script>
  <script type='text/javascript'>
    google.load('visualization', '1', {packages: ['corechart']});

    var GvizService = function($q, $rootScope) {
      var gvizPromise = $q.defer();  
      
      google.setOnLoadCallback(function() {
       gvizPromise.resolve(google.visualization);
       $rootScope.$apply();
      });
      
      this.load = function() {  
        return gvizPromise.promise;
      };
    };
  
    var app = angular.module('myApp', []);
    app.controller('MyCtrl', function($scope) {
      $scope.name = "Name"
    });
    app.directive('chart', function(gviz) {
      return {
        restrict: 'A',
        link: function($scope, $elm, $attr) {
         gviz.load().then(function(gviz) {
           console.log("boo");
           // Create the data table.
           var data = new gviz.DataTable();
           data.addColumn('string', 'Topping');
           data.addColumn('number', 'Slices');
           data.addRows([
             ['Mushrooms', 3],
             ['Onions', 1],
             ['Olives', 1],
             ['Zucchini', 1],
             ['Pepperoni', 2]
           ]);

           // Set chart options
           var options = {'title':'How Much Pizza I Ate Last Night',
                          'width':400,
                          'height':300};

           // Instantiate and draw our chart, passing in some options.
           var chart = new gviz.PieChart($elm[0]);
           chart.draw(data, options);
          });
        }
      }
    });
    app.service('gviz', GvizService);
  </script>
  <body ng-app="myApp"> 
    <div ng-controller = 'MyCtrl'>
      hello {{name}}   
      <div chart></div>
    </div>    
  </body>
  
</html>