Получить имена модулей и контроллеров | службы | директивы во время выполнения
В angular-logger мы пытаемся улучшить $log
, но мы хотели бы работать от имени модуля и компонента angular без изменения. Для этого нам нужно получить контекст AngularJS во время выполнения, то есть имя модуля и имя контроллера, службы или директивы.
app.module("SampleModule").
controller("ControllerOne", function ($log) {
$log.debug("I am ready!")
}).
controller("ControllerTwo", function ($log) {
$log.debug("I am ready!")
});
Значение по умолчанию $log
:
> I am ready!
> I am ready!
Если мы получим имя модуля и контроллера во время выполнения, то с помощью расширенного $log
мы можем получить более богатый результат:
> SampleModule.ControllerOne: I am ready!
> SampleModule.ControllerTwo: I am ready!
Лучшим вариантом будет его получение без изменений в коде контроллера. Возможно, есть способ получить некоторую метаинформацию об объектах, которые получили инъекцию зависимости $log?
Любые предложения?
Ответы
Ответ 1
Был найден аналогичный вопрос, который я нашел на SO, но решение работает только при использовании контроллера в качестве синтаксиса.
// a simple route with controller as syntax
$routeProvider.when(
'/myRoute',
{
templateUrl: '/myRoute',
controller: 'ControllerOne as vm'
}
);
// controller
app.controller("ControllerOne", ['$log', function ControllerOne($log) {
var vm = this;
$log.log(vm.constructor.name);
}]);