1

我正在尝试装饰 angular 的$log工厂以将timestamp消息放入日志中。

到目前为止,它工作得很好,除了这种行为:

当我使用 Angular 的默认配置登录时,我收到:

对象 {name: "bryan", message: "was here"} 第三个参数的消息

普朗克

创建装饰器后,日志变成了这样:

[“消息”,对象,“第三个参数”]

Plunker - 代码在这里

所以,对象没有扩展到控制台,我需要点击消息才能看到完整的对象。

有谁知道我错过了什么?或者知道更好的方法来做到这一点并将时间戳放在消息的开头?

4

1 回答 1

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], ...);

于 2013-08-18T03:07:39.257 回答