【发布时间】:2013-09-19 23:41:21
【问题描述】:
我正在向我的 Angular 应用程序添加一个 Google+ 登录按钮,除了回调结果的处理之外,其中大部分都在工作。 G+ 登录的回调是一个名为 signinCallback 的外部 JS 函数,如下所示:
//Handling the Google+ Signin right here
function signinCallback(authResult) {
angular.element($("#btnGooglePlus")).scope().handleGoogleSignin(authResult);
}
我能弄清楚如何将authResult 传回控制器的唯一方法是通过element.scope() 调用控制器方法。 handleGoogleSignin 调用正常,在该函数内部有一个 http.get 服务调用,如下所示:
User.getSocialKey(key).then(function(data) {
console.log(data);
});
User 是一个服务,getSocialKey 看起来像:
getSocialKey: function(etag) {
console.log("Hit the social key service with the etag: " + etag);
return $http({
url: '/api/user/social',
method: 'post',
data: {etag:etag}
}).then(function(result) {
console.log("Returning promise from social service");
return result.data;
});
},
第一个日志语句被击中,然后什么都没有。请求永远不会发送。现在,如果我在页面上单击具有ng-model 属性的某些内容(例如,复选框),那么请求就会被发送和接收。所以我的问题是:为什么我的 Angular 服务调用会被暂停,直到我点击某些东西?为什么不马上通过?
我尝试用有效的服务调用替换getSocialKey,同样的事情。我相信问题归结为使用angular.element($("#btnGooglePlus")).scope().handleGoogleSignin(authResult); 调用函数,但我不确定。有人见过这个吗?
【问题讨论】:
标签: javascript ajax angularjs google-plus