【问题标题】:Error with nested urls in AngularAngular中的嵌套网址错误
【发布时间】:2015-05-14 03:28:03
【问题描述】:

我正在使用 AngularJs,但我遇到了路由问题。 我有这两个网址:

/:博客

/:blog/: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,角度正在考虑像 /:blog 这样的路线,其值为“post-slug”。如果我只访问“/post-slug”路线,也是一样的。

如果我在最后加上一个斜线 (/),则 angulas 只考虑一条斜线。例如:

/blog-name/post-slug/ -> 调用索引路由

我该如何解决这个问题?

【问题讨论】:

  • 哪个网址无效? /:blog/:post/:blog ?
  • 对不起。我忘了解释这个。 /:blog/:post 是错误的。角度正在考虑最后一条规则中的其他情况。
  • 你确定它不包含额外的//:blog/:post/..这样会搞砸的网址
  • 我的安古拉斯很疯狂!我现在试过了,路由给我带来了主页(只有“/”)
  • 我编辑了这篇文章。我发现了一个错误,但我无法解决这个问题。

标签: javascript angularjs routes


【解决方案1】:

我认为您遇到的是 AngularJs 缺少嵌套视图路由系统。单击它时它起作用的原因是它确实更改了模板,但它无法仅从 URL 解释您尝试执行的操作,因此当您刷新时它不知道要做什么执行并将您带到 URL 的第一个有效部分,即第一个视图 /:blog。您的解决方案可能是 Angular-ui-route 之类的。

【讨论】:

  • J_阿曼多。我将 angular.config 更改为 Angular-ui-route (github.com/angular-ui/ui-router#get-started) 并发生了同样的错误。如果我将 $locationProvider.html5Mode 更改为 false 并尝试使用哈希 (#/blog-name/post-slug) 进行访问,那么一切都会像魅力一样。该问题仅在没有哈希的情况下发生,更改了 URL。
【解决方案2】:

尝试添加以下代码: $locationProvider.html5Mode(true)

【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2012-05-05
    • 2011-01-29
    相关资源
    最近更新 更多