Angularjs 如何在浏览器中调试angular services

Angularjs 如何在浏览器中调试angular services,angularjs,Angularjs,我在angular应用程序中创建了一个工厂/服务 我想在浏览器中调试它。是否有一种方法可以访问它的实例并检查它的函数和变量的值 角度范围可通过以下方式访问: angular.element(e).scope() 有类似的方式进入工厂吗?我相信您可以使用以下方式: angular.element(e).injector().get('serviceName') 由于angularjs服务是单例的,因此在任何angular.element上执行此操作将始终返回相同的服务实例/对象。将您的服务注入

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

我想在浏览器中调试它。是否有一种方法可以访问它的实例并检查它的函数和变量的值

角度范围可通过以下方式访问:

angular.element(e).scope()

有类似的方式进入工厂吗?

我相信您可以使用以下方式:

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

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

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


.

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

巴塔朗的有用文档:


正如@bmleite所说,您可以使用:

angular.element( {DOM element} ).injector().get('serviceName')
您可以选择想要的DOM元素(使用Chrome Developer Tools上的“元素”选项卡或Firefox/Firebug上的“HTML”选项卡),然后在“控制台”选项卡中使用$0指向它

要选择的最简单元素是上面有ngApp指令的元素。 最后的代码是:

var myService = angular.element($0).injector().get('serviceName');
然后您可以访问他的所有变量和函数:

myService.getConfig('dev');
试试chrome扩展


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

+1这很好。这样调试就容易多了。添加到angular文档的链接将进一步改进该实用程序。这仍然有效吗?它以前工作得很好。但是现在它说
ReferenceError:e没有定义
@IvanWang是的,它仍然有效。刚刚测试过,它正在工作。您确定
e
变量已定义且可访问吗?(可能是像这样的问题吗?@b这可能是原因。请告诉我如何在AngularJs中定义
e
?在Chrome中,您可以在元素选项卡中选择一个元素,并用$0引用它。因此,您可以选择主控制器元素,使用
angular.element($0).injector().get('serviceName')
ng inspect的额定值比angular-Batarang高得多