我正在尝试按照本教程实现错误日志记录: http://engineering.talis.com/articles/client-side-error-logging/
错误记录正常,但是当我想将日志发送到服务器时,我遇到了问题。我无法提出http请求。我试过了:
$.ajax({type: "POST"...})
但是说没有定义$。 此外,我试图在这里注入$ http:
loggingModule.factory( "exceptionLoggingService", ["$log","$window", "traceService","$http"...
但后来我收到了error。 任何想法如何做到这一点?
答案 0 :(得分:2)
$ .ajax()是一个jQuery函数。你正在使用AngularJS。所以这并不奇怪。
你有一个循环依赖。这意味着您的exceptionLoggingService依赖于$ http,$ http依赖于(传递)exceptionLoggingService。要解决此错误,您可以动态查找$ http服务,而不是将其注入:
loggingModule.factory('exceptionLoggingService', ['$injector', ..., function($injector, ...) {
var sendErrorToServer = function(error) {
$http = $injector.get('$http');
$http.post(...);
}
}
请注意,仍然存在循环依赖,这可能会导致问题是当$ http失败时调用记录器:这将调用记录器使用$ http,这将失败,这将导致记录器被调用,等等等等。