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.