簡體   English   中英

如何使AngularJS UI路由器使用,但忽略URL中的可選尾隨反斜杠?

[英]How to make AngularJS UI-router take, but ignore optional trailing backslash in URL?

我正在使用AngularJS的UI-router進行路由。 目前,我有這個:

  $stateProvider.state('mystate',
    {
      url: '/mystate/{id:int}/:slug/',
      params: {
        slug: {value: null, squash: true}
      },
      templateUrl: 'partials/mystate.html',
      controller: 'MyStateCtrl'
    }
  );

如果存在尾隨反斜杠,則捕獲id和可選的slug URL參數。 如果沒有尾隨反斜杠,則該模式甚至不匹配。 在所有情況下,我都需要它來匹配或不使用反斜杠。 我怎樣才能做到這一點?

有人告訴我, 這里附上我的應用程序如下配置:

.config(['$urlMatcherFactoryProvider', function($urlMatcherFactoryProvider) {
      $urlMatcherFactoryProvider.strictMode(false);
    }
  ]
)

是的 但是,如果沒有斜杠,它仍然無法工作。 我該怎么辦?

默認情況下,UI路由器中的路由參數是可選的。 這就是為什么需要尾隨斜杠的原因。 如果有人不想使用查詢參數方法,我可以想到兩種避免尾隨斜杠的解決方案:

  1. 為無parameterless版本設置另一條路由。
  2. 使用非url路由參數:即省略您希望為可選的參數,並在params屬性中聲明它,但在這種情況下,可選參數將不會出現在URL中。

示例代碼:

$stateProvider
.state('mystate', {
  url: '/mystate/{id:int}',
  params: {
    slug: {value: null, squash: true}
  },
  templateUrl: 'partials/mystate.html',
  controller: 'MyStateCtrl'
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM