我有一个角色抓取我的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错误的原因并提取是否为模板未找到错误?
编辑:我在角度中看了$route
,并尝试获取当前路线templateUrl
并进行比较。
if(response.url == $route.current.templateUrl) { /** ... */ }
但是,当我包含它时,我得到了一个循环导入,当我没有时,我得到了一个未定义。
答案 0 :(得分:3)
我们假设模板的扩展名为.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");
}
]);