Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度-在localStorage中存储和读取状态复选框列表_Javascript_Angularjs_Json_Local Storage - Fatal编程技术网

Javascript 角度-在localStorage中存储和读取状态复选框列表

Javascript 角度-在localStorage中存储和读取状态复选框列表,javascript,angularjs,json,local-storage,Javascript,Angularjs,Json,Local Storage,我试图在localStorage中存储带有每个复选框值的复选框列表,但如果我在对象上使用JSON.parse,则在ng repeat中总是会出现重复错误,或者在JSON中的位置1处出现意外标记o 基本上,这是一个选项列表,稍后我会加载它,但我也会在访问菜单时加载状态,如果它们存在于localStorage中的话 controller.js var initialAlarmColumns = [{ columnName: "Alarm",

我试图在localStorage中存储带有每个复选框值的复选框列表,但如果我在对象上使用JSON.parse,则在ng repeat中总是会出现重复错误,或者在JSON中的位置1处出现
意外标记o

基本上,这是一个选项列表,稍后我会加载它,但我也会在访问菜单时加载状态,如果它们存在于localStorage中的话

controller.js

 var initialAlarmColumns = [{
                    columnName: "Alarm",
                    value: true
                }, {
                    columnName: "Description",
                    value: true
                }, {
                    columnName: "Acknowledged by",
                    value: false
                }];

                if(localStorage.getItem('alarmColumns') === null){
                    localStorage.setItem('alarmColumns', JSON.stringify(initialAlarmColumns));
                    self.alarmColumns = initialAlarmColumns;
                }
                else{
                    self.alarmColumns = JSON.parse(localStorage.getItem('alarmColumns'));
                }

                self.setAlarmColumns = function(columnsChecked){
                    localStorage.setItem('alarmColumns', JSON.stringify(columnsChecked));
                };
optionsView.html

<ul class="alarmColumnOptions" ng-repeat="alarmOptions in $ctrl.alarmColumns">
    <li><label><input type="checkbox" name="alarmOptions.columnName" ng-model="alarmOptions.value" ng-change="$ctrl.setAlarmColumns($ctrl.alarmColumns)"> {{alarmOptions.columnName}}</label></li>
</ul>
  • {{alarmOptions.columnName}
我使用的是简单的本地存储,而不是指令,因为我的应用程序中存在另一个不相关的问题


编辑:以下是发现问题的

。在ng重复中,我错过了$index的轨道

    <h3>Alarm Columns</h3>
    <ul class="alarmColumnOptions" ng-repeat="alarmOptions in alarmColumns track by $index">
        <li><label><input type="checkbox" name="alarmOptions.columnName" ng-model="alarmOptions.value" ng-change="setAlarmColumns(alarmColumns)"> {{alarmOptions.columnName}}</label></li>
    </ul>

您是否可以编写一个小的代码块来重现您的问题,并将其作为JSFIDLE发布?
var initialAlarmColumns = [{
                columnName: "Alarm",
                value: true
            }, {
                columnName: "Description",
                value: true
            }, {
                columnName: "Acknowledged by",
                value: false
            }];

        if (localStorage.getItem('alarmColumns') === null) {
            localStorage.setItem('alarmColumns', JSON.stringify(initialAlarmColumns));
        }

        $scope.alarmColumns = JSON.parse(localStorage.getItem('alarmColumns'));

        $scope.setAlarmColumns = function(columnsChecked) {
            localStorage.setItem('alarmColumns', JSON.stringify(columnsChecked));
        };