我正在尝试装饰角度$log
工厂,将邮件的timestamp
放入日志中。
直到现在它仍然运行良好,除了这种行为:
当我使用角度的默认配置进行登录时,我会收到:
对象{name:“bryan”的消息,消息:“在这里”}第三个参数
创建装饰器后,日志变为:
[“message for”,Object,“third argument”]
Plunker - 代码在这里
因此,对象未扩展到控制台,我需要单击该消息以查看完整对象。
有谁知道我错过了什么?或者知道更好的方法来执行此操作并将时间戳放在消息的开头?
答案 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], ...);
。