здесь у меня есть аккуратно настроенный шаблон маршрутизации в 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". После успешной аутентификации
просто говоря, я хочу показать другое состояние после аутентификации.
я новый к угловому, так что легко на меня;)
Решение будет зависеть от того, как вы выполнили аутентификацию, но есть несколько способов динамического указания шаблона.
templateUrl
может быть функцией, которая принимает один параметр, $stateParams
и возвращает URL-адрес
Альтернативно, templateProvider
может быть функцией с введенными параметрами, которая возвращает шаблон HTML.
Подробнее здесь: https://github.com/angular-ui/ui-router/wiki#templates
С учетом сказанного я буду проявлять осторожность с любым из этих путей. Если статус проверки подлинности пользователя изменяется без изменения состояния, используемый шаблон может не обновляться.
Вы можете использовать обещание 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