【发布时间】:2013-08-17 07:32:51
【问题描述】:
目前我正在使用服务来执行操作,即 从服务器检索数据,然后将数据存储在服务器本身。
与此不同,我想将数据放入本地存储,而不是存储在服务器上。我该怎么做?
【问题讨论】:
标签: angularjs
目前我正在使用服务来执行操作,即 从服务器检索数据,然后将数据存储在服务器本身。
与此不同,我想将数据放入本地存储,而不是存储在服务器上。我该怎么做?
【问题讨论】:
标签: angularjs
这是我的一些代码,用于存储和检索到本地存储。我使用广播事件来保存和恢复模型中的值。
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/
【讨论】:
使用ngStorage 满足您所有的AngularJS 本地存储需求。请注意,这不是 Angular JS 框架的原生部分。
ngStorage 包含两个服务,$localStorage 和 $sessionStorage
angular.module('app', [
'ngStorage'
]).controller('Ctrl', function(
$scope,
$localStorage,
$sessionStorage
){});
查看Demo
【讨论】:
【讨论】:
你可以使用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 是here。
回购是here。
希望它对某人有所帮助!
【讨论】:
按照步骤在 Angular 中存储数据 - 本地存储:
在你的 angular.module 中注入“ngStorage”
eg: angular.module("app", [ 'ngStorage']);
$localStorage
4.您可以在控制器中使用$localStorage
Eg: $localstorage.login= true;
以上内容会将本地存储存储在您的浏览器应用程序中
【讨论】:
根据您的需要,例如,如果您想允许数据最终过期或设置要存储多少记录的限制,您还可以查看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>
【讨论】: