2013-07-03 4 views
2

Google API를 사용하기 위해 oauth2 서비스를 만들었습니다. 다음 줄은 JS 클라이언트 라이브러리를로드 라이브러리 로딩이 완료되면 화재 onLoad 핸들러 등록 :Google JS 클라이언트 라이브러리를 AngularJS에로드하십시오.

<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-controller' 대신'ng-app'를 쿼리합니다. – Sydney

+0

잘 알고 있습니다. 나는 이것을 밖으로 시도 할 것이다. – rGil

관련 문제