ui-router 可选参数,不带尾部斜杠
ui-router optional param without trailing slash
所以这似乎是一个常见问题,但我还没有找到任何明确的答案。
基本上我有一个状态:
.state('users', {
url: '/example/:id',
templateUrl: 'angular-views/example.html',
controller: 'ExampleCtrl'
})
我希望 id 是可选的。
当然匹配
example/
example/1234
但如果没有尾部斜杠,则不匹配。
example
我试过 $urlMatcherFactoryProvider.strictMode(false);
,但这似乎不适用于这种情况。我可以使用 example?param=1234
,但我更喜欢更简洁的版本。
我真的需要定义第二个状态才能工作吗?
您可以通过在 params
对象中给它们一个默认值来定义可选的 URL 参数,就像这样。 squash
如果未定义,将隐藏链接中的参数。
.state('users', {
url: '/example/:id',
templateUrl: 'angular-views/example.html',
controller: 'ExampleCtrl',
params: {
id: {
value: null,
squash: true
}
}
});
我在本地试过了,不管尾部斜线如何,它似乎都能正常工作。
所以这似乎是一个常见问题,但我还没有找到任何明确的答案。 基本上我有一个状态:
.state('users', {
url: '/example/:id',
templateUrl: 'angular-views/example.html',
controller: 'ExampleCtrl'
})
我希望 id 是可选的。
当然匹配
example/
example/1234
但如果没有尾部斜杠,则不匹配。
example
我试过 $urlMatcherFactoryProvider.strictMode(false);
,但这似乎不适用于这种情况。我可以使用 example?param=1234
,但我更喜欢更简洁的版本。
我真的需要定义第二个状态才能工作吗?
您可以通过在 params
对象中给它们一个默认值来定义可选的 URL 参数,就像这样。 squash
如果未定义,将隐藏链接中的参数。
.state('users', {
url: '/example/:id',
templateUrl: 'angular-views/example.html',
controller: 'ExampleCtrl',
params: {
id: {
value: null,
squash: true
}
}
});
我在本地试过了,不管尾部斜线如何,它似乎都能正常工作。