Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度中的嵌套URL出错_Javascript_Angularjs_Routes - Fatal编程技术网

Javascript 角度中的嵌套URL出错

Javascript 角度中的嵌套URL出错,javascript,angularjs,routes,Javascript,Angularjs,Routes,我用的是AngularJs,我的路线有问题。 我有两个URL: /:博客 /:blog/:post 当我列出博客并点击帖子时,URL会改变,所有的事情都会像一个符咒一样工作。但是,如果我重新加载页面,则角度是打开错误的路径 这是我的代码: .when('/:blog', { // If I reload the page, the angular choose this route templateUrl: '/templates/blogs/show.html', controll

我用的是AngularJs,我的路线有问题。 我有两个URL:

/:博客

/:blog/:post

当我列出博客并点击帖子时,URL会改变,所有的事情都会像一个符咒一样工作。但是,如果我重新加载页面,则角度是打开错误的路径

这是我的代码:

.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时。 ,angular正在考虑像/:blog这样的路由,其值为“post slug”。如果我访问onlye“/post slug”路由,则相同

如果我在最后加上一条斜线(/),安格拉斯人认为这条路线只是一条斜线。例如:

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


如何解决此问题?

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

我认为您正在经历的是AngularJs缺少嵌套视图路由系统。当你点击它时,它工作的原因是因为它确实改变了模板,但它无法解释你试图从URL单独做什么,所以当你刷新它时,它不知道该做什么,并将你带到URL的第一个有效部分,即第一个视图
/:blog
。您的解决方案可能是角度ui路由。

哪个url不起作用<代码>/:blog/:post或
/:blog
?对不起。我忘了解释这个。/:blog/:post是错误的。angular在最后一条规则中考虑了其他方面。你确定它没有像
/:blog/:post/
那样在url的末尾包含额外的
/
。这会让我的Angulas很疯狂!我现在试过了,这条路线给我带来了我编辑过这篇文章的主页(只有“/”)。我发现了一个错误,但我无法解决这个问题。我将angular.config更改为angular ui route(),出现了相同的错误。如果我将$locationProvider.html5模式更改为false,并尝试使用哈希(#/blog name/post slug)进行访问,则所有操作都会非常有效。只有在没有散列、更改URL的情况下才会出现问题。