我正在使用带有角度ui路线的angularjs,我有多个路线问题 我有一个名为“bookDetails”的州。 Book具有唯一ID和唯一名称,因此可以使用id或name访问:
/books/:bookName
/books/id/:bookId
这两条路线实际上是同一个州。但我不能在多条路线上使用相同的状态。因此,我必须将其分为两种状态:
$stateProvider.state('booByName', {
url: '/books/:bookName',
templateUrl: '/templates/book-details.html',
controller: bookController
})
.state('bookById', {
url: '/books/id/:bookId',
templateUrl: '/templates/book-details.html',
controller: bookController
});
虽然我有代码重复,但我可以容忍这一点。当我有另一个与book相关的视图时,问题就出现了:bookReaders。 bookReaders向用户显示阅读本书的所有用户
理想的是拥有“bookDetails”状态和“bookDetails.bookReaders”子状态。但是因为我有多个书籍路线,我必须创建另外两个州:
bookByName.bookReaders
和bookById.bookReaders
并复制州。
这种事情的最佳做法是什么?如何防止状态重复?
答案 0 :(得分:0)
您使用的是UI路由器吗?如果是这样,您可以使用$ urlMatcherFactory和UrlMatchers而不是写绝对URL。然后,定义一个状态和匹配ID和名称的匹配器,相应地设置状态参数。