AngularJS ui路由器:带参数和不带参数的URL
AngularJS ui-router: URL with params and without params
我目前正在开发一个SPA,用于管理中的用户标识。我现在在angular ui路由器中为状态定义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")实现的是,对于访问"/inidentity/add"的特殊情况,我想重定向到不同的模板(将来可能使用不同的控制器)。
然而,这是行不通的。只有第一种状态可以。第二个被忽略。据我所知,问题是即使我访问"/inidentity/add",这个URL在技术上仍然符合第一种状态。在这种情况下,状态参数"serialNumber"将简单地设置为"add"。
我想我在理解ui路由器的工作原理时遇到了问题。ui路由器中有没有一种方法可以不同地处理这两个URL?
也许我思考这个问题的方式有根本的错误。如有任何帮助,我们将不胜感激:)
问候,
Timo
您可以使用正则表达式验证url:https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-参数
例如,如果您的序列号是一个整数,则以下内容将使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'
});
相关文章:
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 传递包含'%的参数'在URL中
- 如何在router.get()方法中传递url作为参数
- javascript中url中的Regex参数
- 如何在reactrouterv2.+中从URL获取参数
- 使用express.具有多个url和可选参数的Router()
- 如何在所有ajax调用中向URL添加参数
- 通过Javascript将HTML中的电话号码与URL参数进行交换
- 如何使用Javascript从URL参数中自动填充文本字段
- XMLHttpRequest.open()AJAX中的参数url
- 如何将Google Analytics配置为将URL参数作为单个页面进行跟踪
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 在url参数javascript中存储键值对列表
- backbone.js-映射标准url参数-使用多个参数
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- UI 路由器参数 URL 不起作用,只是重定向到 /
- 在Select2中传递参数url
- 使用jQuery/Javascript(querystring)获取查询字符串参数url值
- Javascript -重定向参数URL只有一次
- 替换url参数-url被破坏