【问题标题】:AngularJS ui-router: URL with params and without paramsAngularJS ui-router:带参数和不带参数的 URL
【发布时间】:2015-11-03 08:26:36
【问题描述】:

我目前正在开发用于管理用户身份的 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 参数“序列号”。这工作正常,我可以访问“identityController”中的参数。

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

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

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

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

问候,

提莫

【问题讨论】:

  • 您能提供更多文件吗?尤其是 html 文件和控制器
  • 控制器中除了console.log($stateParams.serialNumber);之外什么都没有。我还没有开始实现更多功能。
  • 通过更改映射,它将像'/identity/find/:serialNumber'一样工作

标签: javascript angularjs angular-ui-router


【解决方案1】:

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

【讨论】:

  • 就是这样!谢谢你。由于serialNumber 始终是一个整数值,因此可以完美运行。
猜你喜欢
  • 2014-08-21
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多