2

我可能只是缺少一些简单的东西,但我想给我的路线起别名。我试图让路由 /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'

});


}]);
4

4 回答 4

2

我认为您应该首先仔细计划您的 URL 模式。/{{post_name}}拥有和/posttemplate处于同一水平似乎不是一个好主意。

也许您可以尝试为所有单独的文章添加路径前缀,例如/post/:post_name. 然后你可以把它添加到你的路由器配置中:

.when("/post/:post_name", {
    controller: 'DynamicRouteController',
    templateUrl: 'templates/posttemplate.html'
}

然后在 中,DynamicRouteController读取并将其映射到您的帖子 ID。您可以在帖子中添加类似字段的内容,其中存储您希望从中访问它的 URL (/post/post_name)。post_name$routeParamsunique_name

或者,如果你真的想要,你也可以把它们放在同一级别。只需确保“catch-all”项目位于路由器配置的末尾。

而且,如果您愿意,您绝对可以将路由器配置保存到 JSON 文件中。只需遍历一组配置项并将它们传递给when().

于 2014-05-16T19:21:34.200 回答
1

您可以使用redirectTo从“别名”重定向到其他路线。

.when("/hello_world", {
    redirectTo: '/posttemplate'
}

有关更多信息,请参阅$routeProvider上的文档。

于 2014-05-12T15:32:03.307 回答
1

嗯......这就是我最终做的......如果有人知道更好的方法......请告诉我。

routes["/dashboard"] =  { 

     controller: 'controllers.DashboardController', 
     templateUrl: 'templates/dashboard.html', 
     aliases: ['/dash','/dasher'],
     meta: {
       title: "Dashboard",
       description: 'This is my description'
     }

 };

routes["/bucket"] =  {    
             controller: 'controllers.PostTemplateController',  
             templateUrl: 'templates/posttemplate.html', 
             aliases: [],
             arguments: {
                   id: 1
               },
             meta: {
               title: "Dashboard",
               description: 'This is my description'
               }


 };

//Incontroller
     if (!postId)
        postId = $route.current.arguments.id;
于 2014-05-12T16:59:43.593 回答
0

查看这个项目ui-router。它提供了多种功能来增强您的路线和模板管理。

于 2014-05-09T09:10:59.750 回答