小编典典

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

all

我有这样的服务:

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

我想 从 JavaScript 控制台测试它 并调用f1()服务的功能。

我怎样才能做到这一点?


阅读 73

收藏
2022-03-22

共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()

2022-03-22