Angular 中的嵌套网址出错
Error with nested urls in Angular
我正在使用 AngularJs,但我在路由方面遇到了问题。
我有这两个网址:
/:博客
/:博客/:post
当我列出博客并单击 post 时,URL 发生了变化,所有的东西都运行得很好。但是如果我重新加载页面,Angular 打开错误的路线。
这是我的代码:
.when('/:blog', {
// If I reload the page, the angular choose this route
templateUrl: '/templates/blogs/show.html',
controller: 'BlogController',
resolve: {
initialData: ["BlogInitialData", function(BlogInitialData){
return BlogInitialData();
}]
}
})
.when('/:blog/:post', {
templateUrl: '/templates/posts/show.html',
controller: 'PostController',
resolve: {
initialData: ["PostInitialData", function(PostInitialData){
return PostInitialData();
}]
}
})
请帮帮我!
我试过改单,也没用。
****************** 已编辑 **************************
我发现了这个问题,但我无法解决这个问题。
例如,当我访问 /:blog/:post 时。
http://website.com/blog-name/post-slug,angular 正在考虑像 /:blog 这样值为 "post-slug" 的路由。如果我只访问“/post-slug”路由,则相同。
如果我在末尾加上一个斜杠 (/),则 angulas 会将路由视为仅一个斜杠。例如:
/blog-name/post-slug/ -> 调用索引路由
我该如何解决这个问题?
尝试添加以下代码:
$locationProvider.html5Mode(true)
我认为您遇到的问题是 AngularJs 缺少嵌套视图路由系统。单击它时它起作用的原因是因为它 确实 更改了模板,但它无法单独从 URL 解释您要执行的操作,因此当您刷新时它不知道该怎么做,而是将您带到 URL 的第一个有效部分,即第一个视图 /:blog
。您的解决方案可能是 Angular-ui-route.
我正在使用 AngularJs,但我在路由方面遇到了问题。 我有这两个网址:
/:博客
/:博客/:post
当我列出博客并单击 post 时,URL 发生了变化,所有的东西都运行得很好。但是如果我重新加载页面,Angular 打开错误的路线。
这是我的代码:
.when('/:blog', {
// If I reload the page, the angular choose this route
templateUrl: '/templates/blogs/show.html',
controller: 'BlogController',
resolve: {
initialData: ["BlogInitialData", function(BlogInitialData){
return BlogInitialData();
}]
}
})
.when('/:blog/:post', {
templateUrl: '/templates/posts/show.html',
controller: 'PostController',
resolve: {
initialData: ["PostInitialData", function(PostInitialData){
return PostInitialData();
}]
}
})
请帮帮我! 我试过改单,也没用。
****************** 已编辑 **************************
我发现了这个问题,但我无法解决这个问题。 例如,当我访问 /:blog/:post 时。 http://website.com/blog-name/post-slug,angular 正在考虑像 /:blog 这样值为 "post-slug" 的路由。如果我只访问“/post-slug”路由,则相同。
如果我在末尾加上一个斜杠 (/),则 angulas 会将路由视为仅一个斜杠。例如:
/blog-name/post-slug/ -> 调用索引路由
我该如何解决这个问题?
尝试添加以下代码:
$locationProvider.html5Mode(true)
我认为您遇到的问题是 AngularJs 缺少嵌套视图路由系统。单击它时它起作用的原因是因为它 确实 更改了模板,但它无法单独从 URL 解释您要执行的操作,因此当您刷新时它不知道该怎么做,而是将您带到 URL 的第一个有效部分,即第一个视图 /:blog
。您的解决方案可能是 Angular-ui-route.