как изменить templateUrl состояния при аутентификации в angularjs

0

здесь у меня есть аккуратно настроенный шаблон маршрутизации в ui.route

'use strict';

var app = angular.module('myApp', [ 'ngAnimate', 'ui.router']);

app.config([ '$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/');

    $stateProvider.state('App', {
        url : '/',
        views : {
            'header' : {
                templateUrl : 'partials/header.jsp',
                controller : 'headerController'
            },
            'body' : {
                templateUrl : 'partials/indexbody.jsp',
                controller : 'indexBodyController'
            },
            'footer' : {
                templateUrl : 'partials/footer.jsp'
            }
        }
    }).state('App.Dashboard', {
        url : 'Dashboard',
        views : {
            'body@' : {
                templateUrl : 'partials/dashboard.jsp',
                controller : 'dashboardController'
            },
            '[email protected]' : {
                templateUrl : 'partials/dashboard_adddeal.jsp'
            }
        }
    }).state('App.Dashboard.AddDeal', {
        url : '/AddDeal',
        views : {
            '[email protected]' : {
                templateUrl : 'partials/dashboard_adddeal.jsp'
            }
        }
    }).state('App.Dashboard.Section2', {
        url : '/Section2',
        views : {
            '[email protected]' : {
                templateUrl : 'partials/a.html'
            }
        }
    });
} ]);

Все работает нормально, но я хочу изменить "body-view" в состоянии "App". После успешной аутентификации

просто говоря, я хочу показать другое состояние после аутентификации.

я новый к угловому, так что легко на меня;)

Теги:
authentication
angular-ui-router
state

2 ответа

1

Решение будет зависеть от того, как вы выполнили аутентификацию, но есть несколько способов динамического указания шаблона.

templateUrl может быть функцией, которая принимает один параметр, $stateParams и возвращает URL-адрес

Альтернативно, templateProvider может быть функцией с введенными параметрами, которая возвращает шаблон HTML.

Подробнее здесь: https://github.com/angular-ui/ui-router/wiki#templates

С учетом сказанного я буду проявлять осторожность с любым из этих путей. Если статус проверки подлинности пользователя изменяется без изменения состояния, используемый шаблон может не обновляться.

0

Вы можете использовать обещание resolve в своем $stateProvider.state.

Пример:

.state('App', {
                url: '/',
                /*some skipped lines*/
                resolve: {
                    /*verify the authentication*/
                    verify();
                    $state.go('App.Dashboard');
                }
            });

Подробнее о том, что вы можете сделать здесь: https://github.com/angular-ui/ui-router/wiki/Quick-Reference#resolve

Ещё вопросы

Сообщество Overcoder
Наверх
Меню