我有一个拦截器以 Angular 抓取我的 HTTP 错误,如下所示:
angular.module("app")
.factory("interceptor", function($q) {
// omitted for brevity.
responseError: function(response) {
switch(response.status) {
case 404:
// here be the problem
break;
default:
break;
}
$q.reject(response);
}
})
.config(["$httpProvider",
function($httpProvider) {
$httpProvider.interceptors.push("interceptor");
}
]);
我遇到的问题是 404 可能由多种原因引起。例如,缺少 CSS 表可能会导致 404 或图像丢失。但是,我特别针对的是给定路线的模板是否丢失并隔离这种情况。
是否可以分解 404 错误的原因并提取它是否是模板未找到错误?
编辑:我以 Angular 查看了 $route
,并尝试获取当前路由的 templateUrl
并进行比较。
if(response.url == $route.current.templateUrl) { /** ... */ }
但是,当我包含它时,我得到了一个循环导入,而当我没有包含它时,我得到了一个循环导入。
最佳答案
我们假设模板有一个 .html
扩展名,并且是唯一具有该扩展名的对象。
angular.module("app")
.factory("interceptor", function($q) {
// omitted for brevity.
responseError: function(response) {
switch(response.status) {
case 404:
// Check the config object, look for ".html"
// in the url string
if(response.config.url.indexOf('.html') !== -1){
// It's an html document
}
break;
default:
break;
}
$q.reject(response);
}
})
.config(["$httpProvider",
function($httpProvider) {
$httpProvider.interceptors.push("interceptor");
}
]);
关于javascript - 分解 angular.js 中 404 响应的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28241474/