我正在angularjs中构建基于权限的访问控制应用程序。我希望$ transitions中的参数等于$ routeChangeStart中的'next'参数。
function ($rootScope, $state, $transitions, LoginService) {
console.log('------------------in app.js run');
$state.go('login');
$transitions.onStart({}, function ($transitions) {
var newToState = $transitions.$to();
if(checkPermissionForView(// param similar to next))
});
}
我定义了一个服务,用于检查登录用户是否具有访问视图的权限
checkPermissionForView : function (view) {
if (!view.requiresAuthentication) {
return true;
}
return userHasPermissionForView(view);
}
userHasPermissionForView : function(view){
if(!isLoggedIn()){
return false;
}
}
isLoggedIn : function () {
var user = JSON.parse(localStorage.getItem("user"));
console.log(user);
return user != null;
}
正如您所见,我想将“下一个”信息传递给服务部门。是$ transition。$ to()产生与$ routeChangeStart('next')中的next相同的结果? 我是新来的。 TIA
答案 0 :(得分:0)
是的,使用Transition.to()
获取将被激活的状态。
有关详细信息,请参阅docs for the Transition class。
function ($rootScope, $state, $transitions, LoginService) {
console.log('------------------in app.js run');
$state.go('login');
$transitions.onStart({}, function (transition) {
var newToState = transition.to();
if(!checkPermissionForView(newToState)) {
return $state.target('login');
}
});
}
...
checkPermissionForView : function (state) {
if (!state.requiresAuthentication) {
return true;
}
return userHasPermissionForState(state);
}
userHasPermissionForState : function(view){
if(!isLoggedIn()){
return false;
}
}
isLoggedIn : function () {
var user = JSON.parse(localStorage.getItem("user"));
console.log(user);
return user != null;
}
我强烈建议您阅读Transition Hooks Guide