Angular Js и Google Api client.js (gapi)

Мне потребовался один день, чтобы заставить это работать, поэтому я думаю, что мой опыт может быть полезным от кого-то. И, возможно, некоторые другие найдут улучшение.

Итак, я начал angularJS два дня назад. И я хочу, чтобы он работал с конечными точками Google Cloud для создания внутреннего интерфейса. Вот беда для меня.

Клиент javascript для gapi поставляется с асинхронной загрузкой, поэтому угловая инициализация завершится с ошибкой gapi.

Таким образом, вам нужно выполнить угловую загрузку при инициализации gapi:

удалить нг-приложение = "MYAPP»добавлять

Добавьте обратный звонок:

function googleOnLoadCallback(){  
    var apisToLoad = 1; // must match number of calls to gapi.client.load()  
    var gCallback = function() {  
        if (--apisToLoad == 0) {  
            //Manual bootstraping of the application  
            var $injector = angular.bootstrap(document, ['myApp']);  
            console.log('Angular bootstrap complete ' + gapi);  
        };  
    };  
    gapi.client.load('helloWorld', 'v1', gCallback, '//' + window.location.host + '/_ah/api');  
}

Чувствовать себя хорошо, но как насчет звонка?

Итак, вот контроллер:

angular.module('myApp.controllers', []).  
    .controller('MyCtrl', ['$scope' ,'helloWorldService',  
        function($scope,greetingsService) {
          helloWorldService.loadData($scope);  
    }]);

А вот и сервис:

angular.module('myApp.services', [])
service('helloWorldService', [function() {
   this.loadData = function($scope)  {
     //Async call to google service
     gapi.client.helloWorld.greetings.listGreeting().execute(
        function(resp) {
            if (!resp.code) {
                console.debug(resp);
                $scope.greetings = resp.items;
                // Because it's a callback,
                // we need to notify angular of the data refresh...
                $scope.$apply();
            }
      });
   };
}]);

И волшебным образом ваша страница обновляется благодаря Angular.

Не стесняйтесь отмечать везде, где я ошибаюсь.

Ответы на вопрос(8)

Ваш ответ на вопрос