可以使用 Angular 的 ui-路由器限制直接 URL 导航吗?
Possible to restrict direct URL navigation with Angular's ui-router?
我想更改状态并从我的 /cart
导航到我的 /checkout
状态,但不允许我的用户在他们的浏览器中直接导航到 /checkout
。这可能吗?
这是他们目前的设置方式:
ui-路由器
.state('cart', {
url: '/cart',
templateUrl: './views/cart.html',
controller: 'CartCtrl',
title: "Shopping Cart",
requiresLogin: false
})
.state('checkout', {
url: '/checkout',
templateUrl: './views/checkout.html',
controller: 'UserCtrl',
title: "Checkout",
requiresLogin: false
})
控制器:
$scope.goToCheckout = function(){
$state.go('checkout');
}
当有人直接导航到页面时,他们是从空状态导航到 URL 定义的状态。您可以使用该事实来阻止导航到 checkout
.
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
if (fromState.name === '' && toState.name === 'checkout') {
event.preventDefault();
$state.go('cart');
}
});
我想更改状态并从我的 /cart
导航到我的 /checkout
状态,但不允许我的用户在他们的浏览器中直接导航到 /checkout
。这可能吗?
这是他们目前的设置方式:
ui-路由器
.state('cart', {
url: '/cart',
templateUrl: './views/cart.html',
controller: 'CartCtrl',
title: "Shopping Cart",
requiresLogin: false
})
.state('checkout', {
url: '/checkout',
templateUrl: './views/checkout.html',
controller: 'UserCtrl',
title: "Checkout",
requiresLogin: false
})
控制器:
$scope.goToCheckout = function(){
$state.go('checkout');
}
当有人直接导航到页面时,他们是从空状态导航到 URL 定义的状态。您可以使用该事实来阻止导航到 checkout
.
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
if (fromState.name === '' && toState.name === 'checkout') {
event.preventDefault();
$state.go('cart');
}
});