一尘不染

如何从控制台测试AngularJS服务?

angularjs

我有类似的服务:

angular.module('app').factory('ExampleService', function(){
  this.f1 = function(world){
    return 'Hello '+world;
  }
  return this;
})

我想 从JavaScript控制台 进行 测试, 然后调用f1()该服务的功能。

我怎样才能做到这一点?


阅读 214

收藏
2020-07-04

共1个答案

一尘不染

TLDR: 一行 您正在寻找的命令:

angular.element(document.body).injector().get('serviceName')

深潜

AngularJS使用 依赖注入(DI) 将服务/工厂注入到您的组件,指令和其他服务中。所以,你需要做的就是一个服务是什么,以获得 注入第一AngularJS的(喷油器是负责接线了所有的依赖关系和它们提供给组件)。

要获取应用程序的 注入器 ,您需要从angular正在处理的元素中获取它。例如,如果您的应用已在body元素上注册,则调用injector =angular.element(document.body).injector()

从检索到的内容中,injector您可以享受所需的任何服务injector.get('ServiceName')


获取$scope特定元素的另一个有用技巧。使用开发人员工具的 DOM检查工具选择元素,然后运行以下行($0始终为选定元素): angular.element($0).scope()

2020-07-04