所以这似乎是一个常见的问题,但我没有找到任何明确的答案。 基本上我有一个州:
.state('users', {
url: '/example/:id',
templateUrl: 'angular-views/example.html',
controller: 'ExampleCtrl'
})
我希望id是可选的。
确定匹配
example/
example/1234
但如果没有尾随斜线就不匹配。
example
我试过$urlMatcherFactoryProvider.strictMode(false);
,但这似乎不适用于这种情况。我可以使用example?param=1234
,但我更喜欢清洁版。
我真的需要定义第二个状态吗?
答案 0 :(得分:40)
您可以通过在params
对象中为它们提供默认值来定义可选的URL参数,如下所示。如果参数未定义,squash
会隐藏参数。
.state('users', {
url: '/example/:id',
templateUrl: 'angular-views/example.html',
controller: 'ExampleCtrl',
params: {
id: {
value: null,
squash: true
}
}
});
我在本地尝试过,无论是否有斜线,它似乎都能正常工作。