我正在调查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
的{{1}}名称?module
名称,而不是从模块.name
的{{1}}属性中获取“demo”?app
调用中?