[英]Check if HTML file exists before routing [Angular JS/Node JS]
我正在一个NodeJS项目中,其中包括一些用于路由管理的AngularJS,但我找不到如何解决当前问题的方法:我正在尝试在路由之前检查所选HTML文件是否存在。 我已经尝试了许多解决方案,但目前似乎没有任何效果。 这是我的代码:
var app = angular.module("domhanWebSite", ["ngRoute"]);
app.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(false).hashPrefix('!');
//routing management
$routeProvider
.when("/", {
templateUrl : "pages/home.html"
})
.when("/404_not_found", {
templateUrl : "pages/404_not_found.html"
})
.when("/encyclopedie/personnages/:character_html", {
//here verification is missing
templateUrl : function (url_attr) {
return "pages/encyclopedia/characters/"+url_attr.character_html;
}
})
.otherwise( {
redirectTo: "/404_not_found"
});
});
对于第三个“何时”,我想检查HTML是否存在,如果不存在(因为有时URL属性不对应任何内容),最后转到404错误页面。 有谁有一个出色的解决方案? =)
最后,由于在注释中提出了该主题 ,因此找到了解决方案:
.when("/encyclopedie/personnages/:character_html", {
templateUrl : function (url_attr) {
var page = "pages/encyclopedia/characters/"+url_attr.character_html;
if (UrlExists(page)) {return page;}
else {return "pages/404_not_found.html";}
}
})
使用UrlExists函数:
function UrlExists(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.