Google api javascript客户端有时工作,有时未定义
我正在使用GoogleAPI JavaScript客户端,遇到了一个无法解决的错误 我的HTML文件包含以下脚本:Google api javascript客户端有时工作,有时未定义,javascript,angularjs,google-api,Javascript,Angularjs,Google Api,我正在使用GoogleAPI JavaScript客户端,遇到了一个无法解决的错误 我的HTML文件包含以下脚本: <script src="https://apis.google.com/js/client.js?onload=init"></script> 而$scope.is_backend_ready仅在加载API时才使用HTML加载$scope.list()的标记 我得到的错误是uncaughttypeerror:window.initGapi不是函数。我注
<script src="https://apis.google.com/js/client.js?onload=init"></script>
而$scope.is_backend_ready
仅在加载API时才使用HTML加载$scope.list()
的标记
我得到的错误是uncaughttypeerror:window.initGapi不是函数
。我注意到这个错误发生在我第一次加载页面时,如果在调试过程中我在$scope.load\u youtube\u api
函数上设置了一个断点,则api加载正确
我不明白初始化函数
window.initGapi()是如何实现的当HTML只应在后端准备就绪时加载时,代码>,有时会随机地被取消定义。我从谷歌开发者网站上得到了这段代码,所以也许我实现错了。感谢您的帮助。似乎在加载脚本之前调用了函数,请将$window.initGapi函数保持在$timeout内,并在一秒钟后执行该函数。似乎在加载脚本之前调用了函数,将$window.initGapi函数保持在$timeout内,并在一秒钟后执行该函数。我尝试了您的建议,但没有成功。错误消息仍然是相同的。我想,我的主要问题是,我不认为我能够使用承诺,因为谷歌Javascript客户端不支持承诺,所以如何“等待”加载完成?我尝试了你的建议,它不起作用。错误消息仍然是相同的。我想,我的主要问题是,我认为我不能使用承诺,因为谷歌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();
});
}