如果params设置,则角度ui-router解析

时间:2017-01-05 13:00:40

标签: angularjs angular-ui-router

如果没有params发送,我想通过重定向用户来保护我的路由访问。 防止直接访问URL。 我可以在我的控制器中执行此操作,但我已经完成了一些Web服务调用。 如果没有参数,目标是不要求决心。 在这里我的状态:

.state('parent.step2', {
    url: '/step2',
    templateUrl: 'app/template/step2.html',
    controller: 'Step2Controller',
    controllerAs: 'step2',
    params: {name: null},
    data : {
        step: 2
    },
    resolve: {
        data1: ['Data1', function(Data1) {
            return Data1.query().$promise;
        }],
        data2: ['Data2', '$stateParams', function(Data2, $stateParams) {
            return Data2.query({name: $stateParams.name}).$promise;
        }],
        data3: ['Data3', function(Data3) {
            return Data3.query().$promise;
        }]
    }
})

1 个答案:

答案 0 :(得分:1)

我会在$stateChangeStart事件中放置一个监听器:

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
    if ((!toState.data.step) && ($state.current.name === 'parent.step2')) {
        $state.go('error');
    }
  })