通过 .scope().call() 从 JS 外部调用 Angular 服务会挂起请求
Calling Angular service from outside JS via .scope().call() hangs request
我正在努力为我的 Angular 应用程序添加 Google+ 登录按钮,除了处理回调结果外,大部分都在工作。来自 G+ 登录的回调是一个名为 signinCallback
的外部 JS 函数,如下所示:
//Handling the Google+ Signin right here
function signinCallback(authResult) {
angular.element($("#btnGooglePlus")).scope().handleGoogleSignin(authResult);
}
我能弄清楚如何将authResult
传递回控制器的唯一方法是通过 element.scope()
调用控制器方法。 handleGoogleSignin
称为 fine,在该函数中有一个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);
调用函数,但我不确定。以前有人见过这个吗?
抱歉,
我无法测试,但我认为您应该调用.$apply()
,因为该操作是在 AngularJS 的范围之外触发的。
function signinCallback(authResult) {
angular.element($("#btnGooglePlus")).scope().handleGoogleSignin(authResult);
angular.element($("#btnGooglePlus")).scope().$apply();
}
相关文章:
- JavaScript执行暂时挂起页面
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 应用将图表转换为图像的jqplot代码时Chrome挂起
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- MongoDB collection.find()查询挂起
- 使用子字符串方法时应用程序挂起的原因
- 如何在AngularJS中取消挂起的请求
- 从node.js应用程序调用Mongoose Model.save()时挂起
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- IE 10 挂起 XMLHttpRequest 6 分钟,然后响应请求(使用 AngularJS 实现 CRSF)
- 挂起 JavaScript 键关闭事件
- HERE 映射 JS API v3 集群提供程序挂起,添加许多数据点
- Ajax 调用挂起在 jQuery 中
- writeln img src将数据提交到外部系统-Firefox和IE挂起
- 在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的
- 为什么JavaScript中没有挂起回调函数
- 通过 .scope().call() 从 JS 外部调用 Angular 服务会挂起请求
- 诊断流星(Node.js)服务挂起