我在Angular中为$ log创建了一个装饰器。 $ logProvider具有debugEnabled函数,但据我所知,我只能访问$ log服务。是否可以访问函数' debugEnabled()'以某种方式在装饰器中的$ logProvider?
$provide.decorator( '$log', [ "$delegate", function( $delegate ) {
// Saving the original
var _$log = (function( $delegate ) {
return {
log : $delegate.log,
info : $delegate.info,
warn : $delegate.warn,
debug : $delegate.debug,
error : $delegate.error
};
})( $delegate ),
}]);
答案 0 :(得分:1)
debugEnabled()
是$logProvider
本身的一种方法。请注意,$logProvider
负责生成$log
服务(通过其$get
功能)。
装饰者做的是拦截从$get
返回的对象,并允许您添加方法等。
因此,要根据是否启用调试来修改装饰器行为,您只需将$logProvider
注入.config
块,装饰器就会关闭它:
angular.module('example', [])
.config( function ($provide, $logProvider){
$provide.decorator('$log', function ( $delegate ){
if ($logProvider.debugEnabled())
// do something
else
// do something else
return $delegate;
}
})