AngularJS - Как прервать конструкцию $stateProvider в зависимости от результата распознавателя?
Можно ли "остановить" государственное здание на основе результата решателя? Например, у меня есть следующий код:
/**
* @author v.lugovsky
* created on 16.12.2015
*/
(function() {
'use strict';
angular.module('BlurAdmin.pages.dashboard', [])
.config(routeConfig);
/** @ngInject */
function routeConfig($stateProvider) {
$stateProvider
.state('dashboard', {
resolve: {
user: function(baSidebarService){
if(baSidebarService.getStorage()){
return
}
}
},
// if baSidebarService.getStorage() == true
url: '/dashboard',
templateUrl: 'app/pages/dashboard/dashboard.html',
title: 'Dashboard',
sidebarMeta: {
icon: 'ion-android-home',
order: 0,
},
});
}
})();
Я бы хотел, чтобы он разрешался вниз, если истинный возврат не был смонтирован, т. Е. Скрывал бы пункт меню, навигацию, значок и т. Д.
1 ответ
Чтобы прервать изменение состояния из функции разрешения, верните отклоненное обещание или укажите причину:
app.config(routeConfig);
/** @ngInject */
function routeConfig($stateProvider) {
$stateProvider
.state('dashboard', {
resolve: {
user: function(baSidebarService){
if(baSidebarService.getStorage()){
return
}
//ELSE abort state change
throw "no user";
}
},
// if baSidebarService.getStorage() == true
url: '/dashboard',
templateUrl: 'app/pages/dashboard/dashboard.html',
title: 'Dashboard',
sidebarMeta: {
icon: 'ion-android-home',
order: 0,
},
});
}