如果没有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;
}]
}
})
答案 0 :(得分:1)
我会在$stateChangeStart
事件中放置一个监听器:
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
if ((!toState.data.step) && ($state.current.name === 'parent.step2')) {
$state.go('error');
}
})