我将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

08-03 17:24