Ich versuche, den Code in this Quickstart Guide auf, wie man den Google Kalender API verwenden.Wie definiere ich einen Angularjs-Controller, nachdem ein Skript geladen wurde?
Ich habe den folgenden Code. Im Moment versuche ich nur, eine Seite zu haben, die sagt true
, wenn der Benutzer bei Google angemeldet sein muss, und false
, wenn sie bereits haben.
<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>
Das Problem ist, dass der gapi.auth.authorize Teil mir einen Fehler gibt, weil es zu laufen versucht, bevor client.js
geladen ist.
Der erwartete Weg, dies zu lösen, ist die Verwendung einer Callback-Funktion. So versuchte ich
<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>
aber jetzt bekomme ich einen Fehler, da die Steuerung nicht definiert ist, wenn <body ng-controller="calController">
Versuche auszuführen.
Irgendwelche Tipps, wie man dies richtig macht, würde geschätzt werden.
was ist speziell der erste Fehler? Das Skript sollte geladen haben, bevor der Controller überhaupt ausgeführt wird – charlietfl
'TypeError: Kann die Eigenschaft 'authorize' von undefined nicht lesen am neuen calController (angularindex.html: 12) bei Object.invoke (angular.min.js: 41) bei R Beispiel (Winkel.min.js: 89) bei m (Winkel.min.js: 65) bei g (Winkel.min.js: 58) bei g (Winkel.min.js: 58) bei Winkel .min.js: 58 bei angular.min.js: 20 bei m. $ eval (angular.min.js: 145) bei m. $ apply (angular.min.js: 145) ' – quantumbutterfly
bekomme ich nicht Es .. Skripte sind synchron geladen, so dass ich nicht weiß, warum Sie Probleme haben. Kannst du den Fehler einfügen? –