我目前正在开发用于管理用户身份的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?
也许我对此的看法存在根本性的错误。任何帮助将不胜感激:)
此致
蒂莫
答案 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'
});