如何在页面加载时使用 AngularJs 调用 Google Cloud Endpoints,以获取用户信息(PICTURE、NAME..)
How to call Google Cloud Endpoints with AngularJs when the page Loads, to get user information(PICTURE, NAME..)
我正在尝试使用 Google Cloud Endpoints 发出 post 请求,并在页面加载时 AngularJS 获取用户信息并填写个人资料图片、个人资料描述等等...
我可以在按下按钮或类似按钮时发出 运行 请求,但无法在页面加载时自动调用 google 端点,这就是我想要实现的目标。
下面是 HTML 部分,{{userPicture}} 应该已加载到 angular 脚本中:
(HTML)
<div class="form-group">
<label class="col-sm-3 control-label">Profile image</label>
<div class="col-sm-9" ng-controller='initController'>
<img src="{{userPicture}}" class="user-image-profile" alt="User Image">
</div>
</div>
(ANGULAR)
controllers.initController = function($scope, $http){
$scope.userForm = {
"userEmail" : $.cookie('auth')
};
gapi.client.igardenendpoints.getProfile($scope.userForm).execute(function(resp) {
$scope.$apply(function () {
if (resp.error) {
$scope.backmessage.messagetext = "GetProfile Error!"
console.log("error");
} else {
if (resp.userEmail == "TEMPLATE"){
$scope.backmessage.messagetext = "Error please try again!"
}else{
$scope.userPicture = 'https://filiperebollo1986.appspot.com/serve?blob-key=' + resp.profilePicKey;
}
}
});
});
}
我也试过用下面的:
$scope.initData = 函数 () {
gapi.client.igardenendpoints.getProfile($scope.userForm)................
}
和运行控制器末尾的函数,如:
$scope.initData();
但是两者都不起作用,有什么帮助吗?
由于我没有使用 Google Cloud,因此我无法 100% 地帮助您,但我会尽力而为。
首先,要获取数据,通常使用服务比在控制器中执行更好。
但无论如何,你的问题似乎有所不同。在您的 HTML 中,您是否包含了您的脚本和客户端 API?
我能够解决我的问题,下面是解决方案:
问题是,在我调用时,一旦我直接在正文 TAG 上使用 "ng-app" 指令,脚本可能尚未加载。
现在我正在 API 加载后动态注入 angular 模块:
function googleOnLoadCallback(){
var apisToLoad = 1; // must match number of calls to gapi.client.load()
var gCallback = function() {
if (--apisToLoad == 0) {
//Manual bootstraping of the application
var $injector = angular.bootstrap(document, ['authModule']);
console.log('Angular bootstrap complete ' + gapi);
};
};
gapi.client.load('igardenendpoints', 'v12', gCallback, '//' + window.location.host + '/_ah/api');
}
</script>
<script src="https://apis.google.com/js/client.js?onload=googleOnLoadCallback"></script>
现在它正在工作!!!!
现在唯一的问题是当页面加载时出现页面中的{{example}},是否可以避免出现{{}}?
我正在尝试使用 Google Cloud Endpoints 发出 post 请求,并在页面加载时 AngularJS 获取用户信息并填写个人资料图片、个人资料描述等等...
我可以在按下按钮或类似按钮时发出 运行 请求,但无法在页面加载时自动调用 google 端点,这就是我想要实现的目标。
下面是 HTML 部分,{{userPicture}} 应该已加载到 angular 脚本中:
(HTML)
<div class="form-group">
<label class="col-sm-3 control-label">Profile image</label>
<div class="col-sm-9" ng-controller='initController'>
<img src="{{userPicture}}" class="user-image-profile" alt="User Image">
</div>
</div>
(ANGULAR)
controllers.initController = function($scope, $http){
$scope.userForm = {
"userEmail" : $.cookie('auth')
};
gapi.client.igardenendpoints.getProfile($scope.userForm).execute(function(resp) {
$scope.$apply(function () {
if (resp.error) {
$scope.backmessage.messagetext = "GetProfile Error!"
console.log("error");
} else {
if (resp.userEmail == "TEMPLATE"){
$scope.backmessage.messagetext = "Error please try again!"
}else{
$scope.userPicture = 'https://filiperebollo1986.appspot.com/serve?blob-key=' + resp.profilePicKey;
}
}
});
});
}
我也试过用下面的:
$scope.initData = 函数 () {
gapi.client.igardenendpoints.getProfile($scope.userForm)................
}
和运行控制器末尾的函数,如:
$scope.initData();
但是两者都不起作用,有什么帮助吗?
由于我没有使用 Google Cloud,因此我无法 100% 地帮助您,但我会尽力而为。
首先,要获取数据,通常使用服务比在控制器中执行更好。
但无论如何,你的问题似乎有所不同。在您的 HTML 中,您是否包含了您的脚本和客户端 API?
我能够解决我的问题,下面是解决方案:
问题是,在我调用时,一旦我直接在正文 TAG 上使用 "ng-app" 指令,脚本可能尚未加载。
现在我正在 API 加载后动态注入 angular 模块:
function googleOnLoadCallback(){
var apisToLoad = 1; // must match number of calls to gapi.client.load()
var gCallback = function() {
if (--apisToLoad == 0) {
//Manual bootstraping of the application
var $injector = angular.bootstrap(document, ['authModule']);
console.log('Angular bootstrap complete ' + gapi);
};
};
gapi.client.load('igardenendpoints', 'v12', gCallback, '//' + window.location.host + '/_ah/api');
}
</script>
<script src="https://apis.google.com/js/client.js?onload=googleOnLoadCallback"></script>
现在它正在工作!!!!
现在唯一的问题是当页面加载时出现页面中的{{example}},是否可以避免出现{{}}?