如何使用Angularjs将数据存储在本地存储中?

177 angularjs

目前我正在使用服务来执行操作,即从服务器检索数据,然后将数据存储在服务器本身上.

而不是这样,我想将数据放入本地存储而不是将其存储在服务器上.我该怎么做呢?

Ant*_*ton 126

这是我的一些存储和检索到本地存储的代码.我使用广播事件来保存和恢复模型中的值.

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;
}]);
Run Code Online (Sandbox Code Playgroud)

  • 对于记录```sessionStorage```≠```localStorage``` (283认同)
  • 你怎么用这个? (9认同)
  • chovy,这是完整的角度示例http://stackoverflow.com/questions/12940974/maintain-model-of-scope-when-changing-between-views-in-angularjs/16559855#16559855 (4认同)
  • 你可以使用$ window.sessionStorage,这样你就可以在测试中注入它 (4认同)
  • @Anton mozilla有扎实的文档:https://developer.mozilla.org/en-US/docs/Web/HTML https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3 https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript (2认同)

小智 103

如果您用于$window.localStorage.setItem(key,value)存储,$window.localStorage.getItem(key)检索和$window.localStorage.removeItem(key)删除,则可以访问任何页面中的值.

您必须将$window服务传递给控制器.虽然在JavaScript中,window对象在全球范围内可用.

通过使用$window.localStorage.xxXX()用户可以控制的localStorage值.数据的大小取决于浏览器.如果您只使用$localStoragethen值,只要您使用window.location.href导航到其他页面,如果您使用<a href="location"></a>导航到其他页面,那么您的$localStorage值将在下一页中丢失.

  • 这个解决方案最适合我.为什么在使用插件或模块时可以轻松直接进入DOM?因为我想存储对象而不是简单的字符串,所以我只将angular.toJson()与setItem()和angular.fromJson()结合使用getItem().简单.爱它. (12认同)
  • 这是最好的答案.不需要外部依赖. (5认同)
  • 同意,这是键/值对管理的最简单的解决方案 (2认同)

JQu*_*uru 56

对于本地存储,有一个模块可以查看下面的url:

https://github.com/grevory/angular-local-storage

以及HTML5本地存储和angularJs的其他链接

http://www.amitavroy.com/justread/content/articles/html5-local-storage-with-angular-js/

  • StackOverflow不鼓励仅链接答案,因为外部链接往往会死亡. (5认同)

Jet*_*hik 49

使用ngStorage满足您所有AngularJS本地存储需求.请注意,这不是Angular JS框架的原生部分.

ngStorage 包含两个服务,$localStorage$sessionStorage

angular.module('app', [
   'ngStorage'
]).controller('Ctrl', function(
    $scope,
    $localStorage,
    $sessionStorage
){});
Run Code Online (Sandbox Code Playgroud)

检查演示

  • 值得一提的是,它不是角度的一部分,应该作为附加文件导入 (24认同)