【问题标题】:Matching url path with regex in $urlRouterProvider.when()使用 $urlRouterProvider.when() 中的正则表达式匹配 url 路径
【发布时间】:2014-04-16 05:42:51
【问题描述】:

基于角度 ui-router wiki (https://github.com/angular-ui/ui-router/wiki/URL-Routing#urlrouterprovider),应该可以使用正则表达式来匹配传入路径。我如何表达正则表达式以匹配以下重定向规则:

$urlRouterProvider
  .when('', '/events')
  .when('/', '/events')
  .when('/:eventName', '/events/:eventName')
  .when('/results', '/events/results')

测试示例:

localhost => localhost/#/events
localhost/ => localhost/#/events
localhost/myEvent => localhost/#/events/myEvent
localhost/results => localhost/#/events/results
localhost/#/events => localhost/#/events
localhost/#/results => localhost/#/results

【问题讨论】:

  • 你的问题是......?您确实知道when()s 旨在处理特殊情况...而.state()s 用于处理路由...例如我想使用events 而不是e... "when" /e 将其翻译成-> /events
  • 是的,我知道 urlRouterProvider 和 stateProvider 之间的区别。在这种情况下,我们正在讨论 url 重定向,稍后将在代码中将其映射到特定状态。我的问题是如何定义我的重定向规则,在第一个块中的无效语法中进行了解释?
  • 它不适合你吗?我没有看到任何明显的错误......
  • 这不起作用。失败的例子:localhost/events => localhost/events/events 因为'events'作为保留路径名没有被忽略
  • 你上面的测试示例(最后 2 个)不应该是 localhost/events vs localhost/#/events

标签: angularjs angular-ui-router


【解决方案1】:

我找到了答案。 when() 语句的顺序和状态定义很重要。

这行得通:

$urlRouterProvider
    .when('', '/events')
    .when('/', '/events')
    .when('/results', '/events/results')
$stateProvider
    .state('events', {
    ......
    }
$urlRouterProvider // This needs to be at the end to match all other matches
    .when('/:eventName', '/events/:eventName')

【讨论】:

    猜你喜欢
    • 2022-08-11
    • 1970-01-01
    • 2016-12-11
    • 2020-09-30
    • 2014-08-23
    • 2018-01-08
    • 2023-01-31
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多