AngularJS数据在刷新后被“重置”
AngularJS data gets "reset" after refresh
我有一个非常基本的登录服务,没有真正的身份验证,但是当我使用 $window.location.href 刷新页面重定向时,数据会丢失。当用户"登录"并且页面被重定向到主页时,它解析为 loggedIn = false 并重定向回登录页面。
我怎样才能防止这种情况发生?
Code snippets:
登录控制器
ApiService.getUser($scope.user)
.success(function (data) {
UserService.user = data;
UserService.isLogged = true;
$window.location.href = '/';
})
用户服务
return {
user: {},
isLogged: false
};
需要登录服务
return {
loginRequired: function () {
var deferred = $q.defer();
if (!UserService.isLogged) {
deferred.reject();
$location.path('/login');
} else {
deferred.resolve()
}
return deferred.promise;
}
}
应用模块
$routeProvider
.when('/', {
templateUrl: 'views/sheet.html',
controller: 'SheetCtrl',
resolve: {
loginRequired: function(RequireLoginService) {
return RequireLoginService.loginRequired();
}
}
})
将用户数据存储在本地存储中,并使用该数据填充输入字段(如果可用)。本地存储中存储数据的有用对象:
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");
从另一个角度思考让我找到了答案。我只需要在需要"刷新"数据的控制器上放置一个手表,而不是尝试刷新整个页面。
如下:
$scope.$watch(function () { return UserService.user.username; }, function (value) {
$scope.user = value;
});
干杯。
相关文章:
- 重置transform:rotate(),方法是移除并追加在追加和重绘图表后未显示数据的画布
- jQuery 数据表 在页面上导航时,在分页表上重置行的数据
- 数据在发送前重置
- 重置高位图中堆叠图中的数据
- 重置Webix数据表筛选器
- AngularJS数据在刷新后被“重置”
- 如何在更改字段中的选择后重置另一个字段中的数据
- 有没有在 vuejs 中重置组件初始数据的正确方法
- 角度:如何重置映射到不同数据的表单元素
- 数据表 YADCF 重置所有列时出错(exResetAllFilters)
- 节点 js:Express + ssh2 在加载网页时不会重置我的数据结构
- 如何创建不会在每个简历上重置的 RXJS 可暂停数据流
- 如何重置自定义数据并将其发布到Stormpath
- 如何重置JQuery数据表中的分页
- 动态添加html表单元素和更新的数据会被重置
- 表单更新“;重置”;按钮以获取新数据
- 检测午夜和重置数据的最佳方式
- EXT-JS组合框'当动态加载数据时,s存储在扩展后重置
- 单击选项卡时重置表单数据
- 在表单提交后重置Html表单,防止用户回来查看提交的数据