Angularjs:检查$ log装饰器中是否启用了调试

时间:2015-08-21 09:51:29

标签: angularjs

我在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 ),
        }]);

1 个答案:

答案 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;
  }
})