我正在使用UI路由器并尝试弄清楚如何允许用户仅从其他两个状态访问状态。否则,应将用户重定向到家庭状态。
在这种情况下,我只希望用户能够从payment.confirmation状态和选择状态访问payment.details状态。
我不确定如何结合以下两条规则:
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState) {
if (fromState.name !== 'selection' && toState.name === 'payment.details') {
event.preventDefault();
$state.go('home');
}
if (fromState.name !== 'payment.confirmation' && toState.name === 'payment.details') {
event.preventDefault();
$state.go('home');
}
});
以下是各州的相关路由器信息:
.state('payment', {
abstract: true,
url: '/payment',
templateUrl: 'app/views/payment.html'
})
.state('payment.details', {
url: '/details',
views: {
'main': {
templateUrl: 'app/views/cc-payment.html',
controller: 'PaymentFormCtrl'
}
}
})
.state('payment.confirm', {
url: '/confirm',
views: {
'main': {
templateUrl: 'app/views/cc-confirm.html',
controller: 'PaymentFormCtrl'
}
}
}
})
答案 0 :(得分:0)
$rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState) {
if ((fromState.name == 'selection' || fromState.name == 'payment.confirmation ) && toState.name === 'payment.details') {
event.preventDefault();
$state.go('payment.details');
}else{
event.preventDefault();
$state.go('home');
}
});
试试这个。