覆盖$ log后记录消息不正确

时间:2013-08-18 00:11:34

标签: angularjs angularjs-log angularjs-decorator

我正在尝试装饰角度$log工厂,将邮件的timestamp放入日志中。

直到现在它仍然运行良好,除了这种行为:

当我使用角度的默认配置进行登录时,我会收到:

  

对象{name:“bryan”的消息,消息:“在这里”}第三个参数

Plunker

创建装饰器后,日志变为:

  

[“message for”,Object,“third argument”]

Plunker - 代码在这里

因此,对象未扩展到控制台,我需要单击该消息以查看完整对象。

有谁知道我错过了什么?或者知道更好的方法来执行此操作并将时间戳放在消息的开头?

1 个答案:

答案 0 :(得分:2)

您需要将argument数组展开为warn()的参数列表。您可以使用apply()来实现它。这只是一个JavaScript技巧。

warn: function () {
    //create a new args. You can't modify arguments since it is controlled by AngularJS
    var args = [new Date()];
    angular.forEach(arguments, function (i) {
        args.push(i);
    })
    $delegate.warn.apply(null, args);
}

$delegate.warn.apply(null, args);评估为$delegate.warn(args[0], args[1], ...);