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