在$ log输出中包含AngularJS模块和控制器名称?

时间:2014-06-06 22:22:09

标签: javascript angularjs logging angularjs-scope angularjs-log

我正在调查AngularJS中的日志选项和约定。我希望我的$log输出包含modulecontroller名称(类似于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");
}]);

我想以更好的方式解决这个问题。具体做法是:

  1. 是否有更好的方式来访问将controller添加到$scope的{​​{1}}名称?
  2. 有没有办法获取module名称,而不是从模块.name的{​​{1}}属性中获取“demo”
  3. Enhancing $log in AngularJs the simple way类似,注入格式的最佳方法是将“[module.controller]”添加到app调用中?

0 个答案:

没有答案
相关问题