- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想在调试时将日志消息输出到控制台。在 Controller 中工作正常,但无法在模块配置 block 中工作,例如
angular.module('MyApp', [])
.run(function($state){
// run stuff here
});
.config(function($logProvider){
$log.debug('Config debug message');
});
我得到一个错误:
error TypeError: Cannot read property 'debug' of undefined
是否可以在模块的配置 block 中使用 logProvider?
最佳答案
$logProvider
在配置阶段访问用于配置日志服务,或者您可以注入(inject) $provide
以使用 decorators 更改/利用日志服务的行为.日志服务本身尚未在您的模块 MyApp
中实例化。您可以改为从核心 ng
获取记录器实例并将其用于调试。
你可以这样做:-
.config(function(){
var $log = angular.injector(['ng']).get('$log')
$log.debug('Config debug message');
});
$logProvider.$get
将为您提供日志服务的构造函数,您可以自己通过调用 $injector.instantiate($logProvider.$get)
创建它的实例> 但问题在于它依赖于尚未实例化的窗口服务,因此最终您的记录器实例化将失败。
另一种 hacky 方法是通过在配置 block 中添加一个装饰器来强制 angular 实例化记录器,您可以在需要任何配置日志记录之前将其设置为第一个配置 block ,之后您可以执行 ctor
来自 $logProvider
getter
并获取记录器的实例。
.config(function($provide){
//Just a dummy decorator
$provide.decorator('$log', function($delegate){
return $delegate;
});
}).config(function($logProvider){
//get logger instance
var log = $logProvider.$get();
log.debug("Got it");
});
关于javascript - 是否可以使用 $logProvider 登录模块的配置 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984449/
我对 $logProvider 感到困惑...我已禁用日志消息,但我仍然收到日志。 谁能帮我看看这段代码出了什么问题吗? angular .module("myModule", []).con
我想(默认情况下)隐藏调试语句 $logProvider.debugEnabled(false); 但我希望开发人员通过某种路径参数(或类似的东西)访问调试语句。我们有多个“开发”服务器,希望快速浏览
我有一个使用 cordova + AngularJS 1.2.4 的移动应用程序除了一些 Android 2.3.X 设备抛出神秘的 illegal access 异常外,它在我测试的每个平台上都能完
我想在调试时将日志消息输出到控制台。在 Controller 中工作正常,但无法在模块配置 block 中工作,例如 angular.module('MyApp', []) .run(functi
我是一名优秀的程序员,十分优秀!