【发布时间】:2015-06-16 13:26:56
【问题描述】:
我已经设置了我的 Angular 路由以使用 URL 中的 slug 来确定要加载的文件。它看起来像这样:
$routeProvider.when("/project/:slug", {
controller: "ProjectController",
template: function($routeParams){
return '<div id="project" ng-include="\'/views/' + $routeParams.slug + '.html\'"></div>';
}
});
很有魅力,但如果ng-include 的文件不存在,这里就没有备用方案。我考虑过使用解析,但我似乎无法正确检查文件。我的尝试如下所示:
$routeProvider.when("/project/:slug", {
controller: "ProjectController",
resolve: {
check: ["$route", "$http", "$location", function($route, $http, $location){
$http.get("/views/" + $route.current.params.slug + ".html").then(function(res){
if (!res.data) $location.path("/");
else return true;
});
});
},
template: function($routeParams){
return '<div id="project" ng-include="\'/views/' + $routeParams.slug + '.html\'"></div>';
}
});
值得注意的是,这是 MEAN 堆栈上的单页应用程序的一部分。我在 NodeJS 中的 Express 路由设置如下:
app.get("*", function(req, res){ res.sendFile(__dirname + "/public/index.html"); });
【问题讨论】:
标签: javascript html angularjs node.js routes