在ui-router中设置抽象嵌套状态的默认子级

Mic*_*ael 5 javascript url-routing angularjs angular-ui-router

我用ui-router.
这是我的嵌套状态:

$stateProvider
.state('books', {
  abstract: true,
  url: '/books',
  controller: 'BooksCtrl',
  templateUrl: 'contents/books.html'
})
.state('books.top', {
  url: '/top',
  templateUrl: 'contents/books-top.html'
})
.state('books.new', {
  url: '/new',
  templateUrl: 'contents/books-new.html'
});
Run Code Online (Sandbox Code Playgroud)

如何将books.new状态设置为books抽象状态的默认子项,那么当你点击/booksui-router重定向到/books/new?

Rad*_*ler 6

有一个工作的例子

我们可以使用内置功能.1)默认是具有空url的子状态:

$stateProvider
    .state('books', {
      abstract: true,
      url: '/books/new',
      controller: 'BooksCtrl',
      ..
    })
    .state('books.new', {
      //url: '/new',
      url: '',
      ...
    })
    .state('books.top', {
      url: '^/books/top',
      ...
    });
Run Code Online (Sandbox Code Playgroud)

2)保持/books原位,我们可以使用重定向

  $urlRouterProvider.when('/books', '/books/new');
Run Code Online (Sandbox Code Playgroud)

这些链接将按预期工作:

// href
<a href="#/books">
<a href="#/books/new">
<a href="#/books/top">
//ui-sref
<a ui-sref="books.top">
<a ui-sref="books.new">
Run Code Online (Sandbox Code Playgroud)

请在这里