在浏览器控制台中使用 Angularjs $http

Posted

技术标签:

【中文标题】在浏览器控制台中使用 Angularjs $http【英文标题】:Using Angularjs $http in browser console 【发布时间】:2013-08-28 11:39:31 【问题描述】:

为了快速验证,我在开发过程中在浏览器控制台中测试了 AngularJS 服务。我将服务注入控制台的方式如this question 中所述或

var $inj = angular.injector(['myApp']);
var serv = $inj.get('myService');
serv.doSomething();

这与 AngularJS 1.0.7 完美配合。但是升级到1.1.5后,对于使用$http服务的服务就不再起作用了,不会发送xhr。

我已经测试过直接注入$http,它也不起作用。 AngularJS 变更日志似乎没有关于这个问题的记录。我可以知道这里有什么问题吗?

更新:

AngularJS 1.0.7 Uncompressed 版本好像不太好用。目前测试的工作版本只有 AngularJS 1.0.7 Minified。

它也适用于未压缩。

【问题讨论】:

如果您可以访问$rootScope 服务并调用$rootScope.$apply() 是否有效?前几天我遇到了一个类似的问题,然后启动一个摘要循环是解决方法。 @BrandonTilley 效果非常好!那么$http 是否改为$q 只能在摘要循环中解决?我想我应该更仔细地阅读更新日志。谢谢! 是的,我想是的。我想也许我想象过它在没有消化循环的情况下工作,但你帮助我意识到我并没有失去理智(至少不是因为这个。:) @BrandonTilley 我也认为它可以在没有摘要循环的情况下工作,至少不能用于发送 xhr。 :) 【参考方案1】:
$http = angular.element(document.body).injector().get('$http');

然后

$http.get(...) // or post or whatever

【讨论】:

喜欢!我什至不知道为什么提问的人没有将其指定为正确答案! 啊该死的太棒了!我们已经让营销人员使用 Optimizely 来运行 AB 测试,现在也不需要包含繁重的 jQuery!

以上是关于在浏览器控制台中使用 Angularjs $http的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Web 浏览器中隐藏 angularjs 之类的控制器的源代码? [复制]

Internet Explorer <= 9 中的 AngularJS $http.post 错误

AngularJS:打开一个新的浏览器窗口,但仍保留范围和控制器以及服务

使用 AngularJS 获取地理位置坐标

Tor浏览器不加载angularjs

在angularJs中返回请求响应