gpt4 book ai didi

javascript - 路由前检查 HTML 文件是否存在 [Angular JS/Node JS]

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:35 25 4
gpt4 key购买 nike

我正在开发一个 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"
});
});

对于第三个“when”,我想检查HTML是否存在,如果不存在(因为有时URL属性不对应任何内容),最后路由到404错误页面。有人有一个绝妙的解决方案吗? =)

最佳答案

最后通过this topic找到了解决方案评论中提出:

.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;
}

关于javascript - 路由前检查 HTML 文件是否存在 [Angular JS/Node JS],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47421528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com