我在項目中使用angular的UI路由器和嵌套路由,我面臨的問題是,當我使用鏈接(ui-sref)時,使用userId作爲url的一部分導航到用戶的詳細信息頁面。當我刷新頁面時,狀態參數丟失。StateParams在頁面刷新時使用UI路由器是空的
所以我看了一下角度演示:http://angular-ui.github.io/ui-router/sample/#/contacts/1/item/b並且不能重現這種行爲,但是嵌套狀態不是這個演示的一部分,與我的應用程序相反。
$stateProvider
.state('base', {
abstract: true
})
.state('home', {
parent: 'base',
url: '/',
views: {
'[email protected]': {
templateUrl: 'app/index/index.view.html',
controller: 'IndexController',
controllerAs: 'home'
}
}
})
.state('users', {
url: '/users',
parent: 'base',
abstract: true
})
.state('users.list', {
url: '/list',
views: {
'[email protected]': {
templateUrl: 'app/users/users.list.html',
controller: 'UsersController',
controllerAs: 'users'
}
},
permissions: {
authorizedRoles: UserRoles.ALL_ROLES
}
})
.state('users.details', {
url: '/:userId/details',
views: {
'[email protected]': {
templateUrl: 'app/users/user.details.html',
controller: 'UserDetailsController',
controllerAs: 'userDetails'
}
},
resolve: {
logSomeParams: ['$stateParams', '$state', function ($stateParams, $state) {
console.log($stateParams);
console.log(this);
console.log($state);
}]
}
})
當刷新頁面的URL立即變爲http://localhost:3000/#/users//details和控制檯輸出(解析功能)顯示,PARAMS丟失。
html5Mode(LocationProvider)未啓用。如果userId在頁面刷新時缺失,我已經找到「解決方案」像重定向回列表,但我無法相信沒有更好的方法來解決這個問題。
這是我怎麼在概述鏈接的詳細信息頁面(以及它的工作):
<div class="panel-body" ui-sref="users.details({userId: user.siloUserId})">