在angular-logger处,我们正在尝试增强$log
,但我们希望在角度模块和组件的名称下工作而不做任何更改。为此,我们需要在运行时获取AngularJS 上下文,即模块名称和控制器,服务或指令< / em>名字。
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依赖注入的实体的元信息?
有什么建议吗?
答案 0 :(得分:6)
SO上有similar question that I found,但解决方案仅在使用控制器作为语法时才有效。
// 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);
}]);