【发布时间】:2017-01-05 21:12:37
【问题描述】:
如果没有参数发送,我想通过重定向用户来保护我的路由访问。 以防止直接 url 访问。 我可以在我的控制器中做到这一点,但我有一些网络服务调用。 如果参数不存在,目标是不调用解析。 这是我的状态:
.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;
}]
}
})
【问题讨论】:
-
只需在
data2resolve 中添加一个简单的if语句来检查$stateParams是否包含所需的参数,如果没有,则使用$q.reject()返回拒绝(添加$q服务到函数注入) -
为什么不对可能重定向到登录页面的所有响应错误(代码 401)进行拦截服务?
标签: angularjs angular-ui-router