这是在angularJS中使用$ stateProvider的正确语法吗?

时间:2015-03-09 08:25:22

标签: angularjs angular-ui-router

我正在使用此语法提供路由,但选择#/posts路由时 代码不能正常运行:

app.config([
'$stateProvider',
'$urlRouterProvider',
 function($stateProvider, $urlRouterProvider) {

   $stateProvider
   .state('home', {
      url: '/home',
      templateUrl: '/home.html',
      controller: 'MainCtrl'
  })

.state('posts', {
    url: '/posts/{id}',
    templateUrl: '/posts.html',
    controller: 'PostsCtrl'
})

    $urlRouterProvider.otherwise('home');
 }]) 

1 个答案:

答案 0 :(得分:0)

a working plunker

原因是,网址'/posts'实际上是而非映射。几乎没有办法,但最典型的,我会说,是亲子。因此,我们应该将其作为父(列表视图)

引入
// this could/should be a state for all posts
.state('posts', {
    url: '/posts',
    templateUrl: '/posts.html',
    controller: 'PostsCtrl'
})
// this would be a child state, when id is provided
.state('posts.detail', {
    url: '/{id}',
    templateUrl: '/post.detail.html',
    controller: 'PostsDetailCtrl'
})

此外,父模板posts.html必须包含其详细视图<div ui-view="">

的目标