我正在研究 AngularJS 中的日志记录选项和约定。我希望我的$log
输出同时包含module
和controller
名称(类似于 Log4j 中的记录器)。使用下面的代码,我能够将controller
名称注入$scope
var app = angular.module("demo", []);
app.config(['$provide', function ($provide) {
$provide.decorator('$controller', [
'$delegate',
function ($delegate) {
return function(constructor, locals) {
if (angular.isString(constructor)) {
locals.$scope.controllerName = constructor;
}
return $delegate(constructor, locals);
}
}]);
}]);
app.controller('SampleCtrl', ['$scope', '$log', function ($scope, $log) {
$log.log("[" + app.name + "." + $scope.controllerName +"] got here");
}]);
我想以更好的方式解决这个问题。具体来说:
- 有没有更好的方法来访问将
controller
其添加到$scope
? - 有没有办法获取
module
名称而不是从模块的属性中获取“演示”?.name
app
- 类似于Enhancing $log in AngularJs the simple way ,在调用中注入像“[module.controller]”这样的格式的最佳方法是什么
$log.log()
?