我已设置" XHR断点"打破"任何XHR"找到,哪一行触发AJAX请求,但是当我检查调用堆栈时 - 所有行都是Angular.js库行。这没有意义,因为这样我无法找到代码中的哪一行触发了请求。我该怎么办?
更多信息:
如果这很重要,则AJAX响应是错误的,因为它请求不存在的URL 此外,当我blackbox Angular时 - 断点不会触发。
答案 0 :(得分:0)
Angular不会立即发出Ajax请求。相反,它会将其排队,直到摘要完成。
您可以通过拦截$http.get
方法或您用来发出请求的任何内容来查找导致请求的代码。
debugCall($http, "get"); // put this somewhere where it's only called once
function debugCall(object, methodName){
var originalMethod = object[methodName];
object[methodName] = function(){
debugger;
originalMethod.apply(this, arguments)
}
}
您还可以查看Angular调用堆栈并尝试获取提示。例如,在this demo中,调用堆栈中的第一个函数称为eventHandler
。
如果您转到该调用框架并在控制台中运行event.target.outerHTML
,则会获得<button ng-click="doXhr()">Do XHR 2</button>
。这使您可以很好地了解查找请求的位置。