AngularJS - Как прервать конструкцию $ stateProvider в зависимости от результата распознавателя? - PullRequest
0 голосов
/ 02 мая 2019

Можно ли "остановить" государственное здание на основе результата распознавателя?Например, у меня есть следующий код:

    /**
 * @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 Ответ

0 голосов
/ 02 мая 2019

Чтобы отменить изменение состояния из функции разрешения, верните отклоненное обещание или выброс причина:

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,
            },
        });
}
...