Answers:
这是我存储和检索到本地存储的代码的一部分。我使用广播事件来保存和恢复模型中的值。
app.factory('userService', ['$rootScope', function ($rootScope) {
var service = {
model: {
name: '',
email: ''
},
SaveState: function () {
sessionStorage.userService = angular.toJson(service.model);
},
RestoreState: function () {
service.model = angular.fromJson(sessionStorage.userService);
}
}
$rootScope.$on("savestate", service.SaveState);
$rootScope.$on("restorestate", service.RestoreState);
return service;
}]);
sessionStorage
≠localStorage
如果$window.localStorage.setItem(key,value)
用于存储,$window.localStorage.getItem(key)
检索和$window.localStorage.removeItem(key)
删除,则可以访问任何页面中的值。
您必须将$window
服务传递给控制器。尽管在JavaScript中,window
对象是全局可用的。
通过使用$window.localStorage.xxXX()
,用户可以控制该localStorage
值。数据的大小取决于浏览器。如果仅使用,$localStorage
则只要使用window.location.href导航到其他页面,值就会保留,如果使用<a href="location"></a>
导航到其他页面,则您的$localStorage
值会在下一页丢失。
对于本地存储,有一个模块可以在url下面查看:
https://github.com/grevory/angular-local-storage
和HTML5本地存储和angularJs的其他链接
http://www.amitavroy.com/justread/content/articles/html5-local-storage-with-angular-js/
您可以使用localStorage
此目的。
脚步:
我(还有另一个)创作了角度html5存储服务。我想通过来使自动更新成为可能ngStorage
,但要使摘要周期更可预测/更直观(至少对我而言),添加事件以在需要状态重新加载时进行处理,以及添加选项卡之间的共享会话存储。之后$resource
,我对API进行了建模并对其进行了调用angular-stored-object
。可以如下使用:
angular
.module('auth', ['yaacovCR.storedObject']);
angular
.module('auth')
.factory('session', session);
function session(ycr$StoredObject) {
return new ycr$StoredObject('session');
}
API在这里。
回购在这里。
希望对您有所帮助!
根据您的需求,例如是否要允许数据最终过期或对要存储的记录数设置限制,您还可以查看https://github.com/jmdobry/angular-cache,它允许您定义是否缓存位于内存,localStorage或sessionStorage中。
人们应该为此使用一个名为ngStorage的第三方脚本,这是一个使用示例,它会通过范围/视图的更改来更新本地存储。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<!-- CDN Link -->
<!--https://cdnjs.cloudflare.com/ajax/libs/ngStorage/0.3.6/ngStorage.min.js-->
<script src="angular.min.js"></script>
<script src="ngStorage.min.js"></script>
<script>
var app = angular.module('app', ['ngStorage']);
app.factory("myfactory", function() {
return {
data: ["ram", "shyam"]
};
})
app.controller('Ctrl', function($scope, $localStorage, $sessionStorage, myfactory) {
$scope.abcd = $localStorage; //Pass $localStorage (or $sessionStorage) by reference to a hook under $scope
// Delete from Local Storage
//delete $scope.abcd.counter;
// delete $localStorage.counter;
// $localStorage.$reset(); // clear the localstorage
/* $localStorage.$reset({
counter: 42 // reset with default value
});*/
// $scope.abcd.mydata=myfactory.data;
});
</script>
</head>
<body ng-app="app" ng-controller="Ctrl">
<button ng-click="abcd.counter = abcd.counter + 1">{{abcd.counter}}</button>
</body>
</html>