我的app.config中定义了以下两种状态:
SELECT * FROM table_name where (id = (select max(id) from table_name) || id = (select min(id) from table_name))
和
state('product-details', {
url: '/products/:productId',
templateUrl: '/pages/product-details/product-details.tmpl.html',
controller: 'ProductDetailsController'
})
我面临的问题是因为他们的网址模式都相似,当我尝试导航到state('product-register', {
url: '/products/register',
templateUrl: '/pages/product-register/product-register.tmpl.html',
controller: 'ProductRegisterController'
})
状态时,'register'被angularui-router解释为product-register
并重定向我改为productId
州。
在对SO进行了一些类似的问题之后,我想我会使用正则表达式过滤这些网址,如here所述。但是当我尝试这个时,虽然正则表达式是孤立地匹配,但是状态拒绝改变。
然后在做了一些研究后,我决定合并这两个州:
product-details
这似乎也没有按预期工作。我错过了什么?这不是一件非常正常的事吗?
答案 0 :(得分:3)
尝试移动'产品注册'之前的状态'产品细节'州。
实际上你需要区分你的状态网址模式,否则angular会触发它会找到的第一个匹配。
答案 1 :(得分:1)
您应该能够为参数指定类型以仅匹配特定状态。
在您的情况下,您可以使用:
url: '/products/{productId:int}'
ui路由器页面上有很多其他示例: https://github.com/angular-ui/ui-router/wiki/URL-Routing