我可能只是错过了一些简单的东西,但我想为我的路线添加别名。我正在尝试将路线/hello_world 转发到/posttemplate 的现有路线。我希望能够像这样为我的路由添加别名,以便为用户提供易于记住的方式来访问动态链接......就像博客中的永久链接一样。另外,这是一个单独的问题,有谁知道有一种好方法可以在 json 文件或 xml 中定义所有这些路由,或者在我添加许多路由时保持干净的东西吗?
application.config(['$routeProvider', '$locationProvider', function AppConfig($routeProvider, $locationProvider, $routeParams) {
$locationProvider.html5Mode(true).hashPrefix('!');
$routeProvider.when("/dashboard", {
controller: 'controllers.DashboardController',
templateUrl: 'templates/dashboard.html'
}).when("/wishlist", {
controller: 'controllers.WishlistController',
templateUrl: 'templates/wishlist.html'
}).when("/login", {
controller: 'controllers.LoginController',
templateUrl: 'templates/login.html'
}).when("/posttemplate", {
controller: 'controllers.PostTemplateController',
templateUrl: 'templates/posttemplate.html'
}).when("/hello_world", {
controller: 'DynamicRouteController',
templateUrl: function(params){ return '/posttemplate?id=1' }
}).otherwise({
controller: 'controllers.HomeController',
templateUrl: 'templates/home.html'
});
}]);
最佳答案
我认为您应该首先仔细规划您的 URL 模式。将 /{{post_name}}
和 /posttemplate
放在同一级别似乎不是一个好主意。
也许您可以尝试为所有单独的文章添加路径前缀,例如 /post/:post_name
。
然后你可以将其添加到你的路由器配置中:
.when("/post/:post_name", {
controller: 'DynamicRouteController',
templateUrl: 'templates/posttemplate.html'
}
然后在 DynamicRouteController
中,从 $routeParams
读取 post_name
并将其映射到您的帖子 ID。您可以在您的帖子中添加类似于 unique_name
字段的内容,其中存储您希望从中访问的 URL (/post/post_name)。
或者,如果您确实愿意,也可以将它们放在同一级别。只需确保“catch-all”项位于路由器配置的末尾即可。
而且,如果您愿意,您绝对可以将路由器配置保存到 JSON 文件中。只需迭代配置项数组并将它们传递给 when()
。
关于angularjs - 配置中的 Angular 别名路由无需重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560289/