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

Fre*_*k L 19 angularjs angular-ui-router

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

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

我希望id是可选的.

当然它匹配

example/
example/1234
Run Code Online (Sandbox Code Playgroud)

但是没有尾随斜线就不匹配.

example
Run Code Online (Sandbox Code Playgroud)

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

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

Cas*_*sey 40

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

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

我在本地尝试了这个,无论尾随斜线,它似乎都能正常工作.