39

我在我的 Angular 应用程序中创建了一个工厂/服务。

我想在浏览器中调试它。有没有办法我可以访问它的实例并检查它的函数和变量的值是什么。

角度范围可以使用

angular.element(e).scope()

有没有类似的方式来访问工厂?

4

5 回答 5

67

我相信你可以使用这样的东西:

angular.element(e).injector().get('serviceName')

而且由于 angularjs 服务是单例的,因此在任何angular.element上执行此操作将始终返回相同的服务实例/对象。

于 2013-01-11T14:08:43.487 回答
8

将您的服务注入任何控制器,然后console.log(myService);

小提琴

于 2013-01-11T15:24:43.270 回答
6

就像@bmleite 所说,您可以使用:

angular.element( {DOM element} ).injector().get('serviceName')

您可以选择想要的 DOM 元素(使用 Chrome 开发者工具上的“元素”选项卡或 Firefox/Firebug 上的“HTML”选项卡),然后在“控制台”选项卡中使用 $0 指向它。

要选择的最简单的元素是您有 ngApp 指令的元素。最终代码是:

var myService = angular.element($0).injector().get('serviceName');

然后你可以访问他的所有变量和函数:

myService.getConfig('dev');
于 2014-11-04T10:23:05.447 回答
4

尝试ng-inspect chrome 扩展。

控制台中的 $get('serviceName') 将返回服务或工厂实例。

于 2015-02-22T18:46:35.450 回答
3

我不确定它是如何检查服务的,但是Angular Batarang是一个很棒的 Chrome 扩展,用于调试 Angular 应用程序。可能会有所帮助。

https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk

Batarang 的有用文档:

http://www.c-sharpcorner.com/UploadFile/9c2805/getting-started-with-angularjs-batarang/

于 2013-06-16T01:16:08.900 回答