我正在向我的 Angular 应用程序添加一个 Google+ 登录按钮,并且其中大部分都在工作,除了回调结果的处理。G+ 登录的回调是一个外部 JS 函数signinCallback
,调用如下:
//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);
但我不确定。有人见过这个吗?