在AngularJS中加载Google JS客户端库

在AngularJS中加载Google JS客户端库,angularjs,Angularjs,我创建了一个oauth2服务来使用Google API。下一行加载JS客户端库并注册一个onload处理程序,该处理程序在库加载完成时启动: <script src="https://apis.google.com/js/client.js?onload=load"></script> 服务呢 myapp.factory('oauth2', function($rootScope) { this.load = function() { conso

我创建了一个
oauth2
服务来使用Google API。下一行加载JS客户端库并注册一个onload处理程序,该处理程序在库加载完成时启动:

<script src="https://apis.google.com/js/client.js?onload=load"></script>
服务呢

myapp.factory('oauth2', function($rootScope) {
    this.load = function() {
        console.log("Load...");
        gapi.client.load('oauth2', 'v2', function() {
            console.log("OAuth2 API loaded");
        });
    };

    ...

    return this;
});

未调用
load
回调。我还尝试了
oauth2.load
myapp.load
,但都不起作用。如何配置
onload
,以调用
oauth2.load

这是一个完全的猜测,甚至可能不太接近,但可能会让其他人看一看

我的猜测涉及到从angular外部访问angular服务。我使用以下作为参考:

// since the callback is referencing the function 'load', define it here:

var load = function(){
    var elem = angular.element(document.querySelector('[ng-controller]'));
    var injector = elem.injector();
    var oauth2 = injector.get('oauth2') // grab the factory
    return oauth2
}

再说一次,只是猜测而已。如果它不起作用,请在下面评论,我将删除

我对此很好奇。我只在纯JS中尝试过oAuth,而不是在angular中。也许因为回调本身在angular之外,所以其中一个是必需的??工作起来很有魅力,我只是查询
ng app
,而不是
ng controller
。我现在也要试试这个:)
// since the callback is referencing the function 'load', define it here:

var load = function(){
    var elem = angular.element(document.querySelector('[ng-controller]'));
    var injector = elem.injector();
    var oauth2 = injector.get('oauth2') // grab the factory
    return oauth2
}