我的app.js
文件中有以下两条路线,由于某种原因我不知道何时尝试导航到/clients/new-invoice
我看到了/clients/:clientID
路线和模板。我可以转到正确页面的唯一方法是删除/clients/:clientID
路由。
此外,我注意到只有在我将:clientID
添加到下面的路线后才开始发生这种情况。
有人可以通过告诉我这里到底做错了什么来帮助我吗?
$routeProvider.when('/clients/:clientID',
{ templateUrl: 'templates/client-profile-view.html',
controller: 'ClientsController',
title: 'Client Profile',
data: {
auth: true,
plevel: [5]
}
});
$routeProvider.when('/clients/new-invoice',
{ templateUrl: 'templates/new-invoice.html',
controller: 'InvoicesController',
title: 'New Invoice',
data: {
auth: true,
plevel: [5]
}
});
答案 0 :(得分:7)
您只需更改订单,在/clients/:clientID
之后放置/clients/new-invoice
。订单很重要。应在静态路径之后定义所有正则表达式路径。
答案 1 :(得分:2)
您需要首先使用更具体的匹配,最后使用通用匹配:
$routeProvider.when('/clients/new-invoice',
{ templateUrl: 'templates/new-invoice.html',
controller: 'InvoicesController',
title: 'New Invoice',
data: {
auth: true,
plevel: [5]
}
})
.when('/clients/:clientID',
{ templateUrl: 'templates/client-profile-view.html',
controller: 'ClientsController',
title: 'Client Profile',
data: {
auth: true,
plevel: [5]
}
});
答案 2 :(得分:0)
尝试propertyie caseInsensitiveMatch
$routeProvider.when('/clients/new-invoice',
{ templateUrl: 'templates/new-invoice.html',
controller: 'InvoicesController',
caseInsensitiveMatch: true,
title: 'New Invoice',
data: {
auth: true,
plevel: [5]
}
});
我不确定它是否有效
或者只是在第一个位置添加此路线
答案 3 :(得分:0)
我和一位实施了我们的routeProvider的同事讨论了这个问题。正如我所想:没有某种preg匹配机制(我的参数是一个整数/ uuid或像#' new-voice&#39 ;?这样的字符串),这不会起作用。想想这个例子:
/ clients /:clientID =>获取客户详细信息
/ client /:clientID / new-invoice =>获取特定客户新发票
/ clients / new-invoice =>让所有客户获得新发票
但是,如果您被迫按照示例中的描述进行路由,则必须找到另一种解决方案,例如preg匹配参数。
希望我能帮上忙, 问候