由于多个网址,角度ui路由状态重复

时间:2014-04-09 14:38:04

标签: javascript angularjs angular-ui angular-ui-router

我正在使用带有角度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.bookReadersbookById.bookReaders并复制州。

这种事情的最佳做法是什么?如何防止状态重复?

1 个答案:

答案 0 :(得分:0)

您使用的是UI路由器吗?如果是这样,您可以使用$ urlMatcherFactory和UrlMatchers而不是写绝对URL。然后,定义一个状态和匹配ID和名称的匹配器,相应地设置状态参数。

相关问题