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

标签 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);
    }
}])

最佳答案

如果你想避免使用第 3 方组件,实际上只需将 $window 作为依赖项注入(inject)到你的 Controller /服务/等中,这将允许你访问 $window .localStorage$window.sessionStorage

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

angular.module('todo', [])

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

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

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

通常,将这些问题抽象到服务中是一个好主意,这样您就可以在不同的存储方法之间切换(例如 localStorage、sessionStorage、POST 到服务器),而无需更改 Controller 代码。

关于javascript - 如何使用 AngularJS 将数据存储在本地存储中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30795766/

相关文章:

javascript - 使用 ng-show 禁用标签,但不禁用 AngularJS 中的内容

javascript - 使用 Bootstrap 验证器验证动态 TinyMCE 是一个错误还是我的代码有问题?

javascript - 是否可以在传单中拉伸(stretch) imageOverlay?

javascript - HTML5 "Lower Lights"动态文本和不正确的鼠标指针

javascript - 在 Angular JS 中迭代数组以获得通用代码

angularjs - 默认情况下从选择框中选择第一个值 - AngularJS

javascript - 如何将SVG元素(使用Raphael JS lib创建)放入DIV元素(实现人民币点击管理)

javascript - 在封闭的 react native 应用程序(Android)中处理静默推送通知?

html - 多彩多姿的占位符文本

javascript - 如何为 hls.js 创建自定义加载器?