[英]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路由器中的路由參數是可選的。 這就是為什么需要尾隨斜杠的原因。 如果有人不想使用查詢參數方法,我可以想到兩種避免尾隨斜杠的解決方案:
parameterless
版本設置另一條路由。 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.