我有一个非常基本的登录服务,没有真正的身份验证,但是如果我使用$ window.location.href重定向页面刷新,则数据会丢失。 当用户登录'并且页面被重定向到主页,而不是将其解析为loggedIn = false并重定向回登录页面。
如何防止这种情况发生?
Code snippets:
的LoginController
ApiService.getUser($scope.user)
.success(function (data) {
UserService.user = data;
UserService.isLogged = true;
$window.location.href = '/';
})
UserService
return {
user: {},
isLogged: false
};
RequireLoginService
return {
loginRequired: function () {
var deferred = $q.defer();
if (!UserService.isLogged) {
deferred.reject();
$location.path('/login');
} else {
deferred.resolve()
}
return deferred.promise;
}
}
app模块
$routeProvider
.when('/', {
templateUrl: 'views/sheet.html',
controller: 'SheetCtrl',
resolve: {
loginRequired: function(RequireLoginService) {
return RequireLoginService.loginRequired();
}
}
})
答案 0 :(得分:0)
将用户数据存储在本地存储中,并使用该数据填充输入字段(如果可用)。本地存储中存储数据的有用对象:
var LocalStorageManager = {
setValue: function(key, value) {
window.localStorage.setItem(key, JSON.stringify(value));
},
getValue: function(key) {
try {
return JSON.parse(window.localStorage.getItem(key));
} catch (e) {
}
}
};
存储数据:
LocalStorageManager.setValue("key",data);
要检索该数据:
LocalStorageManager.getValue("key");
答案 1 :(得分:-1)
从另一个角度思考让我找到答案。我只需要在需要数据“刷新”的控制器上放一块手表,而不是试图刷新整个页面。
如下:
$scope.$watch(function () { return UserService.user.username; }, function (value) {
$scope.user = value;
});
干杯。