Angularjs: проверить, включена ли отладка в декораторе $ log

0

Я создал декоратор для $ log Angular. $ 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
    Это весь твой код? Если я не понимаю, этот декоратор ничего не добавляет?
  • 0
    Нет, это не так, но я не опубликовал все, потому что я не думаю, что это имеет отношение к вопросу.
Теги:

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню