我有以下路线:
.state('app.base.patient', {
url: '/store/:storeID/patient/:patientID',
template: template,
controller: patientCtrl,
controllerAs: 'vm',
resolve: {
patientObj: ['$stateParams', 'patientResource', function($stateParams, patientResource) {
if ($stateParams.patientID !== '') {
return patientResource.get($stateParams.patientID);
}
return null;
}]
}
});
我可以通过应用程序完美地导航到它(使用$ state.go) 这让我(例如):
'/store/105/patient/8a7f7e785279bc1f015279be7cb40001'
但是当我尝试使用相同的网址刷新页面时,我会被重定向到:
'/store/105/patient/'
任何可能导致此问题的想法?我一直在添加越来越多的日志,但我看不到任何看起来很明显的错误
“父”视图是商店选择视图:
$stateProvider
.state('app.base.store', {
url: '/store',
template: template,
controller: storeCtrl,
controllerAs: 'vm'
});
答案 0 :(得分:0)
您的网址表明状态应该嵌套,但状态定义并未反映出来。您的患者状态应嵌套在您的商店状态中。患者状态将改为这样:
.state('app.base.store.patient', {
url: '/patient/:patientID',
template: template,
controller: patientCtrl,
controllerAs: 'vm',
resolve: {
patientObj: ['$stateParams', 'patientResource', function($stateParams, patientResource) {
if ($stateParams.patientID !== '') {
return patientResource.get($stateParams.patientID);
}
return null;
}]
}
});
同时,您的商店状态如下所示:
$stateProvider
.state('app.base.store', {
url: '/store/:storeID',
template: template,
controller: storeCtrl,
controllerAs: 'vm'
});
然后,只要您的视图正确嵌套,您就可以从商店视图导航到患者状态,如下所示:
ui-sref="app.base.store.patient({patientID: vm.patientID})"
或者像控制器代码那样:
$state.go("app.base.store.patient", { storeID: vm.storeID, patientID: vm.patientID });
答案 1 :(得分:0)
问题原来是一个流氓
this.$state.go('app.base.patient', {storeID: value.id, patientID: null});
我最初添加了显式的patientID:null,因为我认为它是必需的 - 它没有,并且会在加载过程中导致上述问题。