我有一些看起来像这样的状态:
.state('patient.patient-login', {
abstract: true,
template: '<ui-view></ui-view>'
})
.state('patient.patient-login.practiceID', {
url: "/patient-login/:practiceID",
scope: true,
templateUrl: "views/patient-login.html"
})
问题是:practiceID
变量可能很长而且不是用户友好的,我想让用户能够创建一个与练习ID绑定的自定义URL,例如在创建时在Facebook上您开始使用个人资料网址开设的帐户:http://facebook.com/123456789但您可以将其更改为http://facebook.com/whateveryouwant
所以基本上我想完成这样的事情:
POINTER
http://domain.com/companyname > http://domain.com/#/patient-login/companyid
ANOTHER EXAMPLE
http://domain.com/ladentist > http://domain.com/#/patient-login/-85k3jfGEioltold
我能够允许用户设置他们的unique url
,但我不确定如何开始像这样设置路由?
答案 0 :(得分:0)
不确定项目的其余部分是什么样的,但您可以更新状态以处理resolve
属性中的id和唯一网址。大致如下所示:
.state('patient.patient-login.practiceID', {
url: "/patient-login/:practice",
scope: true,
templateUrl: "views/patient-login.html",
resolve: {
patientData: [
'$stateParams',
'practiceSvc', // replace practiceSvc with however you are fetching data from your server
function($stateParams, practiceSvc) {
// check if the :practice param is an id or unique url
if ($stateParams.practice === /* id check */) {
// Call to API - get practice by ID
return practiceSvc.getByID($stateParams.practice);
} else {
// Call to API - get practice by unique url
return practiceSvc.getBySlug($stateParams.practice);
}
}
]
}
})
这假设您可以区分唯一网址和ID。如果你不能这样做,你可以更新它以先检查id,如果没有找到练习,则检查唯一的URL。