我将Angular与UI-router一起使用,并且希望用户始终(或在大多数情况下,为简便起见,我们可以说“总是”)在我的主页step1上输入Web应用程序。
UI-路由器配置简写:
.config(function($stateProvider, $urlRouterProvider) {
// route to root if no valid route found
$urlRouterProvider.otherwise('/step1');
var step1 = {
name : 'step1',
url : '/step1',
templateUrl: 'partials/step1.html'
};
var step2 = {
name : 'step2',
url : '/step2',
templateUrl: 'partials/step2.html'
};
.
.
.
.
}
我可以做一个解析或指定一个 Controller ,然后简单地设置$ location.path('/ step1'),但是有一种方法可以只设置一个入口点,并且只有从step1开始才能访问step2 / step3网址,而无需重定向的费用?
提前致谢
最佳答案
要解决此问题,您还可以使用$ stateChangeStart事件。
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
if (fromState.name === '' && toState.name !== 'state1'){
event.preventDefault();
$state.go('state1');
}
});
资料来源:https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-create-rules-to-prevent-access-to-a-state