对 Angular UI 路由器使用多个正则表达式参数

Using multiple regexp parameter for Angular UI Router

本文关键字:正则表达式 参数 Angular UI 路由器      更新时间:2023-09-26

我正在为我的项目使用 AnglarJs 和 Angular UI Router。我正在为我的路线使用参数,例如:

url: '/content/:categoryId/:categoryType'

但是我在使用网址时遇到了问题:

url: '/content/detail/:contentId'

似乎角度UI路由器无法识别这两者的区别。然后我决定对所有这些使用正则表达式参数

url: '/content/{categoryId:int}/{categoryType:int}'
url: '/content/detail/{contentId:int}'

第二个网址还可以,但是当我使用 ui-sref 时,Angular UI 路由器无法识别第一个网址:

<a ui-sref="firstUrl({categoryId: 1, categoryType: 2})">Anchor</a>

Angular UI 路由器是否只支持一个正则表达式参数?

这里的问题是UI路由器如何查找/解析url的状态。它使用:

  • 国家定义的顺序
  • 使用第一个匹配

这实际上是问题所在,因为第一个 url 模式:

url: '/content/{categoryId:int}/{categoryType:int}'

绝对适合为此提供的网址

url: '/content/detail/{contentId:int}'

这些情况下的解决方案相对简单。更改状态定义的顺序。越精确应该先走,越有活力第二