【发布时间】:2015-05-31 10:24:51
【问题描述】:
在angular-logger,我们正在尝试增强$log,但我们希望以角度模块和组件的名称工作而不做任何更改。为此我们需要在运行时获取AngularJS的context,即模块名和控制器、服务或指令 名字。
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 依赖注入的实体的一些元信息?
有什么建议吗?
【问题讨论】:
-
您可以创建一个指令 ng-controller,它将为每个控制器执行,并将提供给 ng-controller 的内容解析为字符串,并将其设置在 score 中的某个变量上。然后使用该变量来打印控制器名称
-
angular 会执行所有指令,如果找到多个同名指令