在浏览器控制台中使用 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 错误