分解angular.js中404响应的原因

时间:2015-01-30 17:32:25

标签: javascript angularjs

我有一个角色抓取我的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) { /** ... */ }

但是,当我包含它时,我得到了一个循环导入,当我没有时,我得到了一个未定义。

1 个答案:

答案 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");
  }
]);