gpt4 book ai didi

javascript - AngularJS UI 路由器 : URL with params and without params

转载 作者:行者123 更新时间:2023-11-28 06:44:41 25 4
gpt4 key购买 nike

我目前正在开发一个用于管理用户身份的 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'
});

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

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

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

我认为我无法理解 ui-router 的工作原理。ui-router 有没有办法以不同的方式处理这两个 URL?

也许我的思考方式有根本性的错误。任何帮助将不胜感激:)

问候,

蒂莫

最佳答案

您可以使用正则表达式验证网址: 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'
});

关于javascript - AngularJS UI 路由器 : URL with params and without params,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com