页面刷新时从LocalStorage恢复表单

时间:2016-04-25 12:17:11

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

<div ng-repeat="filterSection in filterSections">
    <h4>{{ filterSection.title }}</h4>
    <div class="checkbox" ng-click="loaderStart()" ng-if="filterSection.control == 'checkbox'" ng-repeat="option in filterSection.options">
        <label>
            <input type="checkbox" ng-model="searchParameters[filterSection.key][option.key]" value="{{ option.key }}" checked><span></span> {{ option.value }}
        </label>
    </div>
</div>

我可以访问它 $scope.searchParameters

我可以使用它来存储它 localStorage.setItem('search', JSON.stringify(cleanedParameters));

我可以访问商店 JSON.parse(localStorage.getItem("search"));

但我不知道如何在页面刷新时恢复它。我可以使用一些指令的功能或例子吗?我真的找不到与我的问题类似的东西。

4 个答案:

答案 0 :(得分:2)

您可以使用angularJs的LocalStorageService模块。

有关详细信息,请查看此链接https://www.npmjs.com/package/angular-local-storage

答案 1 :(得分:1)

您可以尝试如下所示。只需创建一个数组并将值推入其中。然后您可以通过循环访问该数组值。

var a = [];
a.push(JSON.parse(localStorage.getItem('search')));

答案 2 :(得分:0)

我正在使用ngStorage(抽象出所有JSON解析内容) - http://ngmodules.org/modules/ngStorage

然后在任何地方(在我的控制器,指令,服务中),我注入$localStorage提供程序,并将存储加载到$scope

app.controller("FooCtrl", ["$scope", "$localStorage", function($scope, $localStorage){

   $scope.storageStuff = $localStorage.somethingSavedInStorage;

}]);

编辑: http://jsfiddle.net/Lvc0u55v/2997/

答案 3 :(得分:0)

我发现我可以毫不费力地将此直接注入$ scope。这个解决方案很好用:$scope.searchParameters=JSON.parse(localStorage.getItem("search"));

我试图自己解析整个事情,但这不值得努力:)

使用$scope.$watch('searchParameters', function (newValue, oldValue)我检查元素是否已更改,并在LocalStorage中更新它。