【发布时间】:2013-01-11 12:36:32
【问题描述】:
我在我的 Angular 应用程序中创建了一个工厂/服务。
我想在浏览器中调试它。有没有办法可以访问它的实例并检查它的函数和变量的值是什么。
可以使用
访问角度范围angular.element(e).scope()
有没有类似的方式访问工厂?
【问题讨论】:
标签: angularjs
我在我的 Angular 应用程序中创建了一个工厂/服务。
我想在浏览器中调试它。有没有办法可以访问它的实例并检查它的函数和变量的值是什么。
可以使用
访问角度范围angular.element(e).scope()
有没有类似的方式访问工厂?
【问题讨论】:
标签: angularjs
我相信你可以使用这样的东西:
angular.element(e).injector().get('serviceName')
由于 angularjs 服务是singletons,因此在任何 angular.element 上执行此操作将始终返回相同的服务实例/对象。
【讨论】:
ReferenceError: e is not defined
e 变量已定义并可访问吗? (会不会是this之类的问题?)
e?
angular.element($0).injector().get('serviceName')
将您的服务注入任何控制器,然后console.log(myService);
【讨论】:
就像@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');
【讨论】:
试试ng-inspect chrome 扩展。
$get('serviceName') 在控制台中将返回服务或工厂实例。
【讨论】:
我不确定它如何检查 服务,但 Angular Batarang 是一个用于调试 Angular 应用程序的出色 Chrome 扩展。可能会有所帮助。
https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk
Batarang 的有用文档:
http://www.c-sharpcorner.com/UploadFile/9c2805/getting-started-with-angularjs-batarang/
【讨论】: