Я внедряю функцию входа в мое приложение Angular и работаю по большей части. Я пытаюсь показать имя пользователя в разделе заголовка. Но он не будет обновляться после входа в систему до обновления экрана. Что мне нужно добавить для обновления этих данных?Угловая сессия var не обновляется
Я в том числе мой заголовок панели, как так:
<div data-ng-include="'app/layout/topnav.html'"></div>
Вот мой главный раздел нав, что мне нужно два способа связывания для сессии.
(function() {
'use strict';
angular
.module('app.layout')
.controller('TopNav', TopNav);
TopNav.$inject = ['$route', 'routehelper', 'Session', 'authentication'];
function TopNav($route, routehelper, Session, authentication) {
/*jshint validthis: true */
var vm = this;
var routes = routehelper.getRoutes();
vm.isCurrent = isCurrent;
vm.userName = Session.userName;
activate();
function activate() { getNavRoutes(); }
function getNavRoutes() {
vm.navRoutes = routes.filter(function(r) {
return r.settings && r.settings.nav;
}).sort(function(r1, r2) {
return r1.settings.nav - r2.settings.nav;
});
}
function isCurrent(route) {
if (!route.title || !$route.current || !$route.current.title) {
return '';
}
var menuName = route.title;
return $route.current.title.substr(0, menuName.length) === menuName ? 'current' : '';
}
vm.logout = function() {
vm.userName = null;
authentication.logout();
};
}
})();
Вот моя служба Session:
(function() {
'use strict';
angular.module('blocks.authentication').service('Session', function() {
this.create = function(userId, userName, userRole) {
this.userId = userId;
this.userName = userName;
this.userRole = userRole;
};
this.destroy = function() {
this.userId = null;
this.userName = null;
this.userRole = null;
};
return this;
});
})();
В том числе нав, как это, она работает только один раз. Поэтому, когда сеанс фактически установлен на моей странице входа в систему, он не обновляется здесь. Я что-то упускаю? Что это лучший способ достичь этого?
Я предпочел бы предложить вам переписать это с помощью службы, которая делает управление аутентификацией и сеанс, удалив ненужные фрагменты кода от контроллера. Контроллер должен иметь минимальное количество строк, которые должны применяться непосредственно к его собственному масштабу - например. действия по манипулированию данными. Все остальное должно быть внутри служб и директив. Если вам нужно дополнительное обновление PLS, вы можете предоставить образец. – Aviro
Итак, у меня есть сеанс в службе, но как это сделать, не назначая его в моем контроллере? – Boone
Вы должны ввести данные сеанса активному контроллеру и назначить детали переменной области. Затем вы можете использовать назначенную переменную для отображения деталей внутри HTML. – Aviro