2013-07-03 12 views
2

我創建了一個使用Google API的oauth2服務。以下行加載JS客戶端庫和寄存器,其觸發時庫加載完成一個onload處理程序:在AngularJS中加載Google JS客戶端庫

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

我的角度的應用程序定義:

var myapp = angular.module('myapp', ['ui.state', 'ui.bootstrap', '$strap.directives']); 

和服務

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

+0

非常好奇這件事。我只在純JS中嘗試過oAuth,而不是在角度內。也許由於回調本身是在角度之外的,[這些方法]之一(http://stackoverflow.com/questions/10490570/call-angular-js-from-legacy-code)是必要的? – rGil

回答

2

這是一個完整的猜測,甚至可能不是很接近,但也許它可以讓別人去看看。

我的猜測涉及從外部角度訪問角度服務。我使用this post作爲參考:

// 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 
} 

再次 - 只是一個猜測。如果它不起作用,請在下面評論,我會刪除!

+0

工程就像一個魅力,我只是查詢'ng-app'而不是'ng-controller' – Sydney

+0

很高興知道。我現在會試試這個:) – rGil