Я пытаюсь «угнетать» код в this руководство по быстрому старту о том, как использовать Google Calendar api.Как определить контроллер Angularjs после загрузки скрипта?
У меня есть следующий код. На данный момент я просто пытаюсь найти страницу, которая говорит true
, если пользователь должен войти в Google и false
, если они уже есть.
<html ng-app="calApp">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script>
<script src="https://apis.google.com/js/client.js"></script>
<script type="text/javascript">
var app = angular.module("calApp",[]);
app.controller('calController',function calController($scope){
gapi.auth.authorize({
'client_id': 'asdfghjkl123456',
'scope': 'https://www.googleapis.com/auth/calendar.readonly',
'immediate': true
}, function(authResult){
if (authResult && !authResult.error) {
$scope.needslogin = false;
}else{
$scope.needslogin = true;
}
});
});
</script>
</head>
<body ng-controller="calController">
{{needslogin}}
</body>
</html>
Проблема заключается в том, что gapi.auth.authorize часть дает мне ошибку, потому что он пытается запустить до того client.js
загружен.
Ожидаемый способ решения этой проблемы - использовать функцию обратного вызова. Так что я попытался
<script src="https://apis.google.com/js/client.js?onload=defineController"></script>
<script type="text/javascript">
var app = angular.module("calApp",[]);
function defineController(){
app.controller('calController',function calController($scope){
gapi.auth.authorize({
'client_id': 'asdfghjkl123456',
'scope': 'https://www.googleapis.com/auth/calendar.readonly',
'immediate': true
}, function(authResult){
if (authResult && !authResult.error) {
$scope.needslogin = false;
}else{
$scope.needslogin = true;
}
});
});
}
</script>
но теперь я получаю сообщение об ошибке, потому что контроллер не определен, когда <body ng-controller="calController">
попытки запуска.
Любые советы о том, как правильно это сделать, будут оценены.
, что конкретно это первая ошибка? Этот скрипт должен быть хорошо загружен до того, как контроллер когда-либо будет запущен – charlietfl
'TypeError: Невозможно прочитать свойство 'authorize' undefined на новом calController (angularindex.html: 12) at Object.invoke (angular.min.js: 41) at R (angular.min.js: 89) при m (угловой.min.js: 65) при g (угловой.min.js: 58) при g (угловой.min.js: 58) при угловых .min.js: 58 at angular.min.js: 20 at m. $ eval (angular.min.js: 145) at m. $ apply (angular.min.js: 145) ' – quantumbutterfly
Я не получаю это .. скрипты загружаются синхронно, поэтому я не знаю, почему вы столкнулись с проблемой. Вы можете вставить ошибку? –