2013-04-09 4 views
4

Я новичок в AngularJS, но мне очень нравится, как работает AngularJS, поэтому я хочу развернуть его как клиентскую часть для моей конечной точки конечной точки Google. Затем я сразу получаю две проблемы:AngularJS и конечная точка облака Google: пройдите через нужный

1, Где разместить myCallback, чтобы он мог работать в контроллере ANgularJs?

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

2, Как я могу сделать oauth2? и как контроллер знает, разрешен ли пользователь?

gapi.auth.authorize({client_id: myCLIENT_ID, 
     scope: mySCOPES,..... 

Любая помощь приветствуется.

ответ

5

Для загрузки Google Library Javascript с AngularJs, функция обратного вызова передается OnLoad из Google библиотеки JavaScript является функция, которая самонастройки AngularJS, как это:

Это идет к финалу HTML файла:

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

Затем в <head> разделе самонастройки угловатый, как это:

<script type='text/javascript'> 

function startApp() { 

    var ROOT = 'http://<yourapi>.appspot.com/_ah/api'; 
    gapi.client.load('myapifromgoogleendpoint', 'version1', function() { 
     angular.bootstrap(document, ["myModule"]); 
    }, ROOT); 
} 

</script> 

Как де написанный Kenji, вам также нужно удалить директив ng-app из вашего html.

+3

Чтобы кто-то попытался выше, вам нужно удалить ng-app, например. Это один из методов «ручной бутстрап», и он не работает, когда установлено ng-app. –

+0

Я думаю, что комментарий Кэндзи должен быть включен в ответ; это может сэкономить много времени людям (в частности, угловым новичкам) –

0

Что касается обратного вызова - Для того, чтобы получить доступ к Угловому контроллеру необходимо использовать инжектор (http://docs.angularjs.org/api/AUTO $ инжекторов.)

Просто создать глобальную функцию обратного вызова, а затем получить ссылку на контроллер от него, как это:

window.callbackFunction() { 
    injector = angular.element(document.getElementById('YourController')).injector() 
    injector.invoke(function ($rootScope, $compile, $document) { 
    $rootScope.variable = "stuff you want to inject"; 
    }) 
} 

В этом примере я инъекционный данные к rootScope, но это также будет работать для определенной области контроллера (только инъекционные $ рамки вместо)

не может помочь со вторым вопросом, какЯ не знаком с gapi, хотя делать вызовы auth2 из angularjs довольно прямолинейны.

+0

спасибо, я попробую его. –

Смежные вопросы