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

时间:2015-06-12 05:20:47

标签: javascript html angularjs

我想使用AngularJS在本地存储中存储信息,但我还没有能够让它工作。我想知道是否有人可以帮助我?

这是我的代码:

    angular.module('todo', [])

.controller('ToDoCtrl', ['$scope', function($scope, $http) {
    $scope.grocerylist = [];
    $scope.priority = 'normal';

    $scope.addTask = function() {
        if(event.keyCode == 13 && $scope.groceryName) {
            $scope.grocerylist.push({"name": $scope.groceryName, "completed": false});   
            $scope.groceryName = "";
        }
    }

    $scope.deleteGrocery = function(index) {
        $scope.grocerylist.splice(index, 1);
    }
}])

4 个答案:

答案 0 :(得分:1)

如果你想避免第三方组件,你实际上只需要将$window作为依赖注入你的控制器/服务/等,这将允许你访问$window.localStorage和{{1 }}

为您的示例(更改了一些细节):

$window.sessionStorage

通常,将这些问题抽象到服务是一个好主意,因此您可以在不更改控制器代码的情况下在不同的存储方法(例如localStorage与sessionStorage和POST到服务器)之间切换。

答案 1 :(得分:0)

对所有AngularJS本地存储需求使用ngStorage

ngStorage包含两项服务:$ localStorage和$ sessionStorage。

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

这里是Demo

干杯!

答案 2 :(得分:0)

包括模块" ngStorage":

angular.module('todo', ['ngStorage'])

有关此内容的更多信息:https://github.com/gsklee/ngStorage

之后,您可以在控制器中注入$ localStorage并保存您喜欢的内容。

.controller('ToDoCtrl', ['$scope', function($scope, $http, $localStorage) {
//...
}

答案 3 :(得分:0)

我通常会像这样保存

app.run(function($rootScope) {
    window.onbeforeunload = function(event) {
        $rootScope.$broadcast('saveState');
    };
});

$rootScope.$on('saveState', function() {
    sessionStorage.data = angular.toJson(data);
});