Я создал декоратор для $ 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 ),
}]);
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;
}
})