我目前正在重构从Angular 1到Angular 2的网络应用程序,但是我很难找到从Angular 2应用程序连接到Google Cloud Endpoints的任何示例。
我使用angular-cli创建了Angular 2应用程序。我想使用来自几个不同服务的端点api,因此如果任何建议的答案都考虑到这一点,那将更为可取。
在Angular 1中,我做了以下
在我的index.html中:
<script>
function init() {
console.log("Initializing Cloud Endpoints..");
window.init();
};
</script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>
和我的main.js:
function Main($scope, $window){
var vm = this;
$window.init= function() {
$scope.$apply(vm.loadApi);
};
vm.loadApi = function(){
gapi.client.load('deviceStockApi', 'v1', function(){
console.log("Cloud Endpoints are now available");
}, 'https://name-of-my-endpoints-app.appspot.com/_ah/api');
}
}
在Angular 2中,我尝试过
编辑1:我应该注意,我只是想为启动器加载api。这就是我在下面的示例中将所有代码放在index.html文件中的原因。但是,最好的情况是,我更喜欢使用Angular 2应用程序启动和使用Cloud Endpoints的最佳实践解决方案。
在我的index.html中:
<script src="https://apis.google.com/js/client.js?onload=init"></script>
<script>
function init() {
console.log("Init called");
gapi.client.load('deviceStockApi', 'v1', function(){
console.log("Cloud Endpoints are now available");
}, 'https://name-of-my-endpoints-app.appspot.com/_ah/api');
}
</script>
当我运行webapp时,不调用init函数(没有控制台输出)。但是,似乎脚本已加载。
任何有关如何解决此问题的建议表示赞赏!此外,如果有人发现了Google或其他人详细说明的一些文档,请分享!
答案 0 :(得分:1)
您是否尝试在此处撤消操作顺序?就像您为Angular 1所做的那样,尝试将apis.google.com导入移动到init代码块下面。