Я хочу поддерживать состояние пользователя между различными Угловыми контроллерами. Я использую JWT для аутентификации и могу использовать это, чтобы безопасно возвращать атрибуты User с сервера на каждом контроллере, но каждый раз, когда я переключаю контроллер, это полный круглый robin.Как использовать Угловые заводы для сохранения состояния между Угловыми контроллерами
Поэтому я добавил следующий метод для моего UserFactory:
function getLocalUser() {
var localUser = {};
return {
isSet:isSet,
get:get,
set:set
};
function isSet(){
return (Object.keys(localUser).length > 0)
};
function get() {
return localUser
};
function set(U){
Object.keys(U).forEach(function (c,i,a){
localUser[c] = U[c];
})
}
}
бревен UserController в так:
function login(username, password) {
UserFactory.login(username, password).then(function success(response) {
$scope.vm.loggedInUser = response.data.user;
$scope.vm.username = null;
$scope.vm.password = null;
UserFactory.getLocalUser().set($scope.vm.loggedInUser);
},handleError);
}
Это четко работает, но когда я перехожу к следующему контроллеру:
$scope.vm = {};
// initialize
if (UserFactory.getLocalUser().isSet) {
$scope.vm.loggedInUser = UserFactory.getLocalUser().get();
} else {
UserFactory.getUser().then(function success(response) {
$scope.vm.loggedInUser = response.data;
});
}
звонок в
UserFactory.getLocalUser().isSet
снова инициализирует var localUser = {} и, конечно, пуст.
Я подражатель здесь так быть добрыми
Заранее спасибо
Вам просто нужно переместить инициализацию объекта 'localUser' (' var localUser = {} ') из функции' getLocalUser() ', чтобы это произошло только один раз. Если вы все еще застряли, покажите весь код для вашего 'UserFactory', чтобы кто-то мог помочь дальше. –
Я думаю, вам лучше использовать угловую службу, с переменной «localUser» в качестве одного из ее атрибутов (таким образом, она будет инициализирована только один раз). – VinceOPS