【问题标题】:Using Angularjs $http in browser console在浏览器控制台中使用 Angularjs $http
【发布时间】: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。 :)

标签: angularjs angularjs-service


【解决方案1】:
$http = angular.element(document.body).injector().get('$http');

然后

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

【讨论】:

  • 喜欢!我什至不知道为什么提问的人没有将其指定为正确答案!
  • 啊该死的太棒了!我们已经让营销人员使用 Optimizely 来运行 AB 测试,现在也不需要包含繁重的 jQuery!
猜你喜欢
  • 2018-01-31
  • 2013-01-25
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
相关资源
最近更新 更多