AngularJS ui-router:带有参数且没有参数的网址

时间:2015-11-03 08:26:37

标签: javascript angularjs angular-ui-router

我目前正在开发用于管理用户身份的SPA。我现在在使用angular ui-router定义状态URL时遇到问题。

这是我到目前为止所发现的:

    .state('identity', {
        url: '/identity/:serialNumber',
        templateUrl: 'app/components/Identity/identity.html',
        controller: 'identityController'
    })
    .state('addidentity', {
        url: '/identity/add',
        templateUrl: 'app/components/Identity/identityAdd.html',
        controller: 'identityController'
    });

第一个状态(“identity”)被传递给URL参数“serialNumber”。这工作正常,我可以访问“identityController”中的参数。

我想用第二个状态(“addidentity”)实现的是,对于访问“/ identity / add”的特殊情况,我想重定向到另一个模板(并且可能在将来使用不同的控制器) )。

然而,这不起作用。只有第一个国家呢。第二个被忽略了。据我所知,问题是即使我访问“/ identity / add”,这个URL在技术上仍然符合第一个状态。在这种情况下,状态参数“serialNumber”将简单地设置为“add”。

我认为我在理解ui-router的工作原理时遇到了问题。 在ui-router中有没有办法以不同的方式处理这两个URL?

也许我对此的看法存在根本性的错误。任何帮助将不胜感激:)

此致

蒂莫

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式验证网址: https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters

例如,如果序列号是整数,则以下内容将使url仅与整数匹配:

.state('identity', {
    url: '/identity/{serialNumber:[0-9]{1,8}}',
    templateUrl: 'app/components/Identity/identity.html',
    controller: 'identityController'
})
.state('addidentity', {
    url: '/identity/add',
    templateUrl: 'app/components/Identity/identityAdd.html',
    controller: 'identityController'
});