4

我正在研究 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
  2. 有没有办法获取module名称而不是从模块的属性中获取“演示”.nameapp
  3. 类似于Enhancing $log in AngularJs the simple way ,在调用中注入像“[module.controller]”这样的格式的最佳方法是什么$log.log()
4

0 回答 0