ui-router可选参数,不带斜杠

时间:2015-03-03 20:01:22

标签: angularjs angular-ui-router

所以这似乎是一个常见的问题,但我没有找到任何明确的答案。 基本上我有一个州:

.state('users', {
     url: '/example/:id',
        templateUrl: 'angular-views/example.html',
        controller: 'ExampleCtrl'
    })

我希望id是可选的。

确定匹配

example/
example/1234

但如果没有尾随斜线就不匹配。

example

我试过$urlMatcherFactoryProvider.strictMode(false);,但这似乎不适用于这种情况。我可以使用example?param=1234,但我更喜欢清洁版。

我真的需要定义第二个状态吗?

1 个答案:

答案 0 :(得分:40)

您可以通过在params对象中为它们提供默认值来定义可选的URL参数,如下所示。如果参数未定义,squash会隐藏参数。

.state('users', {
         url: '/example/:id',
            templateUrl: 'angular-views/example.html',
            controller: 'ExampleCtrl',
            params:  {
              id: {
                     value: null,
                     squash: true
                  }
                }
        });

我在本地尝试过,无论是否有斜线,它似乎都能正常工作。