1
我正在使用Google API JavaScript客戶端,並遇到一個錯誤,我無法弄清楚如何解決。Google api javascript客戶端有時有效,有時未定義
我的HTML文件中有此腳本:
<script src="https://apis.google.com/js/client.js?onload=init"></script>
然後JavaScript的看起來是這樣的:
function init() {
window.initGapi();
}
(function() {
"use strict";
var appControllers = angular.module('appControllers', ['ui.bootstrap']);
appControllers.controller('MusicCtrl', function($window, $modal, $scope) {
$scope.list = function() {
gapi.client.youtube.search.list({
q: 'q',
part: 'snippet'
}).execute(function(response) {
$scope.songs = response.result.items;
$scope.$apply();
});
}
$window.initGapi = function() {
$scope.$apply($scope.load_youtube_api);
}
$scope.load_youtube_api = function() {
gapi.client.setApiKey('API_KEY');
gapi.client.load('youtube', 'v3', function() {
$scope.is_backend_ready = true;
$scope.list();
});
}
而且$scope.is_backend_ready
使用的HTML只加載標記爲$scope.list()
只有當API已加載。
我得到的錯誤是Uncaught TypeError: window.initGapi is not a function
。我注意到這個錯誤發生在我第一次加載頁面時,並且如果在調試過程中我在$scope.load_youtube_api
函數上設置了一個斷點,則API被正確加載。
我不會理解,只有當後端準備就緒時HTML才應該加載,啓動函數window.initGapi();
,可以,有時和隨機未定義。我從Google Developers網站獲得了此代碼,因此可能我錯誤地實施了它。任何幫助讚賞。
我試過你的建議,它沒有工作。錯誤消息仍然相同。我想,我的主要問題是,我不認爲我能夠使用承諾,因爲Google Javascript客戶端不支持承諾,因此如何才能「等待」加載完成? –