Что эквивалентно следующему в $routeChangeStart в $transitions
Я создаю приложение контроля доступа на основе разрешений в angularjs. Я хочу параметр в $ transitions, который будет эквивалентен параметру 'next' в $routeChangeStart.
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;
}
Как видите, я хочу передать "следующую" информацию сервису. Приводит ли $ transitions. $ To() к тому же результату, что и next в $routeChangeStart('next')? Я новичок в этом. ТИА
1 ответ
Решение
Да использовать Transition.to()
чтобы получить состояние, которое будет активировано.
См. Документацию по классу Transition для получения более подробной информации.
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;
}
Я настоятельно рекомендую прочитать Руководство по переходным крюкам