位于angular-logger ,我们正在尝试增强 $log
,但我们希望以 Angular 模块和组件的名称进行工作而不进行更改。为此,我们需要在运行时获取 AngularJS 上下文,即模块名称和 Controller 、服务或指令 名字。
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!
如果我们能够在运行时获取模块和 Controller 名称,那么使用增强的$log
我们可以获得更丰富的输出:
> SampleModule.ControllerOne: I am ready!
> SampleModule.ControllerTwo: I am ready!
最好的选择是在不更改 Controller 代码的情况下获取它。也许有办法获取有关接收 $log 依赖注入(inject)的实体的一些元信息?
有什么建议吗?
最佳答案
有一个similar question that I found在 SO 上,但该解决方案仅在使用 Controller 作为语法时才有效。
// 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);
}]);
关于angularjs - 在运行时获取模块和 Controller |服务|指令名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30556328/